前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言笔记-1

R语言笔记-1

原创
作者头像
Jon_L
修改2023-05-20 19:19:06
7560
修改2023-05-20 19:19:06
举报
文章被收录于专栏:生信矿工生信矿工

生信技能树-数据挖掘课程笔记

数据类型

  • 数值型 (numeric) 1.1 2 30
  • 字符型 (character) "a" "bb" "ccc"
  • 逻辑型 (logical) TRUE T FLASE F NA

变量赋值

代码语言:text
复制
string = "hello,world"
string <- "hello,word" 

比较运算

比较运算的返回值是逻辑值TURE 、FALSE

  • > 大于
  • < 小于
  • >=小于等于
  • >=大于等于
  • == 等于
  • !=不等于

注意区分赋值= 与逻辑值判断的等于==

逻辑值关系

  • &有一者为FALSE即为FALSE
  • |有一者为TRUE即为TRUE
  • !TURE和FALSE相互转换

数据类型的判断和转换

代码语言:text
复制
#是否为数值型数据
is.numeric()
#是否为逻辑型数据
is.logical()
#是否为字符型数据
is.character()
#转换为数值型数据
as.numeric()
#转换为逻辑值数据
as.logical()
#转换为字符型
as.character()
  • 字符型数据转换为数值型NA
  • 字符型数据转换为逻辑型NA
  • 数值型数据转换为逻辑型,数值非0即为TRUE,0则为FALSE
  • 数值型数据转换为字符型"123"
  • 逻辑型数据转换为数值型,TRUE为1,FALSE为0
  • 逻辑型数据转换为字符型"TRUE"or"FALSE"

R语言在不同数据转换时,尽可能保留更多的数据信息

数据结构

  • 向量(vector)
  • 数据框(data.frame)
  • 矩阵(matrix)
  • 列表(list)

向量

向量和矩阵的所有元素只能有一种数据类型 数据框的一列就是一个向量 向量内的元素可以重复

代码语言:text
复制
#向量的生成
c(1,2,3,4)
1:4
c("a","b","c","d")
#向量中有重复的生成
rep("a",times=3)
#向量中有规律的生成
seq(from=1,to=4,by=2)
#向量中数字的随机生成
rnorm(n=3)
#向量之间的组合
paste0(rep("a",3),1:3)

输出结果:

代码语言:text
复制
#向量的简单计算
x = c(1,2,3,4)
x+1
log(x) #返回以e为底x的对数(自然对数)
sqrt(x) #开平方根
#对向量中的元素进行统计的函数
max(x) #最大值
min(x) #最小值
mean(x) #均值
median(x) #中位数
var(x) #方差
sd(x) #标准差
sum(x) #总和
#向量可根据判断,生成逻辑型向量
x >= 2
x == 3

输出结果:

代码语言:text
复制
x = c(2,1,1,3,4,4)
length(x) #向量中元素的个数
unique(x) #依次将第一个出现的元素保留,后面重复的去除
duplicated(x) #依次判断元素是否重复
table(x) #统计每个元素的重复值,以表格形式呈现
class(table(x)) #table()函数输出的并非数据框或矩阵,是该函数特殊的数据类型
sort(x) #按元素数值大小依次排序,默认从小到大
sort(x,decreasing = F) #从大到小排序

输出结果:

代码语言:text
复制
#向量取子集
x <- 8:12
#根据逻辑值取子集
x[x==10]
x[x<12]
x[x %in% c(9,13)]
#根据位置取子集
x[4]
x[2:4]
x[c(1,5)]
x[-4]
x[-(2:4)]
#改一个元素
x[4] <- 40
x
#改多个元素
x[c(1,5)] <- c(80,20)
x

输出结果:

  • 向量的位置从1开始,而不是从0开始
  • x[-4]表示向量除了第4位置上的其他元素
  • 任何操作需要赋值才能修改变量

向量之间的操作

代码语言:text
复制
#向量之间的运算
x = c(1,2,3,4)
y = c(1,3,2,1)
x + y #直接进行数学计算 
x == y #比较运算可以生成逻辑值
paste(x,y,sep=",") #连接两个向量,以","作为连接符
paste0(x,y) #paste0()不需要连接符,直接连接两个向量

输出结果:

代码语言:text
复制
#向量长度不同时,自动循环补齐
x = c(1,2,3)
y = c(1)
x == y
y == x
#循环补齐和两个向量运算顺序无关,少的向量补齐多的向量

输出结果:

代码语言:text
复制
#向量之间取交集、并集、差集
x = c(1,2,3,4)
y = c(1,3,3,5)
intersect(x,y) #取交集
union(x,y) #取并集,并集后去重
setdiff(x,y) #取差集,x中去除y
setdiff(y,x) #取差集,y中去除x
# %in%的使用
x %in% y #x的每个元素在y中存在吗,返回一组逻辑值
y %in% x #y的每个元素在x中存在吗,返回一组逻辑值

输出结果:

  • %in%是将前者依次取出,与后者中所含有的元素进行比对,存在即为TRUE,不存在即为FALSE
  • %in%可用于向量取子集,取出前者向量中在后者向量中有的元素
  • %in%==之间注意区分,%in%是依次取出,=是一一对应

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据类型
  • 变量赋值
  • 比较运算
  • 逻辑值关系
  • 数据类型的判断和转换
  • 数据结构
  • 向量
  • 向量之间的操作
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档