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

R语言基础

原创
作者头像
Magnolia
发布2023-01-06 19:22:21
1K0
发布2023-01-06 19:22:21
举报

R基础概念及数据类型

重要提示

1.Tab键可以补全函数、变量名、指定数据框的行名列名等,能够有效避免错误输入与提高效率

2.只有赋值才会使变量发生变化,没有赋值R只是单纯展示出数据

3.在R中,Error是唯一代表错误的,大部分Warning可以忽略,但并不是出现了Error才是错误,一定要反复检查代码是否完成了目的,小心暗流

4.R中“=”与“<-”均可表示赋值,但是在函数的形式参数=实际参数中,仅可用"="

R中数据类型分为字符(character),数值(numeric)与逻辑值(logical),其中逻辑值包括T/F/NA

需要区分变量与数据,同样是字符,变量不带"",数据会带

涉及数据类型的函数主要包括用于判别数据类型的class(),判断是否是某种数据类型并返回逻辑值的is.numeric(),is.character(),is.logical(),与转换数据类型的as.numeric(),as.character(),as.logical()

*无特殊说明,函数对数据与向量均可用

代码语言:javascript
复制
a<-1
class(a)
a<-as.character(a)
is.numeric(a)

> a<-1
> class(a)
[1] "numeric"
> a<-as.character(a) #仅当赋值了a才会改变
> is.numeric(a)
[1] FALSE

向量

向量将R中不同元素组合生成

length()查看向量的长度,即向量有多少个元素

class()判断向量的数据类型

*向量可以有元素名称,元素名称不是向量的数据,可用names()函数给向量指定元素名称

**向量内所有元素数据类型必须相同,否则会强制转换

向量的生成

1.通过c()将相同类型的数据生成向量

2.通过特殊规则或函数生成

(1) 1:5表示生成包含数字1-5的向量

(2) seq函数指定起点、终点与步长

(3) rep函数重复某一字符或数字

(4) paste及paste0实现字符的连接

(5) 通过判断生成逻辑型向量

(6) 其它生成向量的函数如rnorm等

*以";"连接的两句代码会一起执行

**函数的形式参数可省

循环补齐

生成向量的函数默认有循环补齐,简单而言,一般两个等长的向量运算时会一一对应,但若向量不等长,短向量将会循环以继续与长向量下一位置的元素运算

运用循环补齐可以节省代码量,但忽视循环补齐也会得到错误的结果

代码语言:javascript
复制
b=c("a","e","o");b
length(b)
class(b)
se=seq(from=1,to=5,by=2);se #若设置的步长无法到达终点,取到达终点的前一个数
#上式可简化为seq(1,5,2)
se==1 #逐一判断se中的数据是否为1,返回对应长度的逻辑值向量
se %in% c(1,2) #交叉判断se中是否有1或3,有则输出T,反之输出F
paste0(rep("student",times=3),se) #将两个向量的字符一一拼接
#由于循环补齐,paste0(rep("student"),se)输出同样结果
paste(rep("student"),se,sep = "") #paste0默认连接的字符无间隔,paste可以指定间隔

> b=c("a","e","o");b
[1] "a" "e" "o"
> length(b)
[1] 3
> class(b)
[1] "character"
> se=seq(from=1,to=5,by=2);se #若设置的步长无法到达终点,取到达终点的前一个数
[1] 1 3 5
> #上式可简化为seq(1,5,2)
> se==1 #逐一判断se中的数据是否为1,返回对应长度的逻辑值向量
[1]  TRUE FALSE FALSE
> se %in% c(1,2) #交叉判断se中数据是否为1或2,有则输出T,反之输出F
[1]  TRUE FALSE FALSE
> paste0(rep("student",times=3),se) #将两个向量的字符一一拼接
[1] "student1" "student3" "student5"
> #由于循环补齐,paste0(rep("student"),se)输出同样结果
> paste(rep("student"),se,sep = "") #paste0默认连接的字符无间隔,paste可以指定间隔
[1] "student1" "student3" "student5"

向量运算的常见函数

代码语言:javascript
复制
> x=c(3,2,3,5)
> max(x) #最大值
[1] 5
> min(x) #最小值
[1] 2
> mean(x) #均值
[1] 3.25
> median(x) #中位数
[1] 3
> var(x) #方差
[1] 1.583333
> sd(x) #标准差
[1] 1.258306
> sum(x) #总和
[1] 13
> unique(x) #去重复,生成一个重复值只取一个的向量
[1] 3 2 5
> duplicated(x) #对应元素是否重复,生成一个等长的逻辑值向量
[1] FALSE FALSE  TRUE FALSE
> table(x) #重复值统计,给出重复的元素及重复的次数
x
2 3 5 
1 2 1 
> sort(x) #默认按从小到大排序,设置decreasing=T反之
[1] 2 3 3 5
> sort(x,decreasing = T)
[1] 5 3 3 2

交集、并集、差集函数之后未出现,故仅列出

intersect(x,y)

union(x,y)

setdiff(x,y)

setdiff(y,x)

向量取子集

取子集的方法包括根据逻辑值取子集与根据元素的位置取子集,前者需要生成一个与向量等长的逻辑值,后者需要指定向量中元素的位置,两者格式均为x

代码语言:javascript
复制
x <- 8:12
#根据逻辑值取子集
x[x==10] #中括号内生成了c(F,F,T,F,F)的向量,取出了值为T的数据组成子集
x[x<12]
x[x %in% c(9,13)]
#根据位置取子集,每个向量中的元素根据其在向量的排列顺序具有一个下标,第4个元素的下标是4
x[4] #取出第4个元素
x[2:4] #取出第2-4个元素
x[c(1,5)] #取出第1、5个元素
x[-4] #"-"代表去掉某一个元素,本例为去掉第4个元素
x[-(2:4)] #去掉第2-4个元素

> x <- 8:12
> #根据逻辑值取子集
> x[x==10] #中括号内生成了c(F,F,T,F,F)的向量,取出了值为T的数据组成子集
[1] 10
> x[x<12]
[1]  8  9 10 11
> x[x %in% c(9,13)]
[1] 9
> #根据位置取子集,每个向量中的元素根据其在向量的排列顺序具有一个下标,第4个元素的下标是4
> x[4] #取出第4个元素
[1] 11
> x[2:4] #取出第2-4个元素
[1]  9 10 11
> x[c(1,5)] #取出第1、5个元素
[1]  8 12
> x[-4] #"-"代表去掉某一个元素,本例为去掉第4个元素
[1]  8  9 10 12
> x[-(2:4)] #去掉第2-4个元素
[1]  8 12

本文本根据生信技能树资料整理

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

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

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

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

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • R基础概念及数据类型
  • 向量
    • 向量的生成
      • 循环补齐
    • 向量运算的常见函数
      • 向量取子集
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档