岩酱的生信学习笔记DAY9—R语言数据结构(向量)

2024-05-10 00:32:03 浏览数 (2)

R语言向量

代码语言:R复制
> x <-c(1:5)#对向量复制括号前一定要加c,1:5快捷表示
> x
[1] 1 2 3 4 5
> y<- c("one","two","three","four","five")#对字符串一定要加引号
> y
[1] "one"   "two"   "three" "four"  "five" 

构建等差数列、重复数列

代码语言:R复制
> seq(from=1,to=100,by=2)#从1到100,通过2来排序
 [1]  1  3  5  7  9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59
[31] 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99
> seq(from=1,to=100,length.out= 10)#列出长度为10的等差序列
 [1]   1  12  23  34  45  56  67  78  89 100
> rep(2,5)#重复2,5次
[1] 2 2 2 2 2
> rep(x,5)#重复x向量,5次
 [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
> rep(x,each=5)#重复x向量,每个值重复5次
 [1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5
> rep(x,each=5,times=2)#重复x向量,每个值重复5次,次数为2
 [1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4
[46] 5 5 5 5 5
> rep(x,c(1,2,3,4,5))#将x向量按括号中的数字进行次数重复
 [1] 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5

向量的索引

正(负)整数索引

代码语言:R复制
> x<-c(1:10)
> length(x)#函数length计算向量的长度
[1] 10
> x[1]#通过方括号来检索查找向量中第几位的值
[1] 1
> x[-1]#列出除了第1位所有的值
[1]  2  3  4  5  6  7  8  9 10
> x[c(1:6)]#通过向量c来快速筛选1-6位的值
[1] 1 2 3 4 5 6
> x[c(1,2,1,1,2,3)]#可以多次重复列出第几位的值
[1] 1 2 1 1 2 3

逻辑向量索引

代码语言:R复制
> y<-c(1:10)
> y[c(T,F,T,F,T,T,T,T,T,T)]#只输出向量中TRUE的值
[1]  1  3  5  6  7  8  9 10
> y[c(T)]#循环输出TRUE所有的值
 [1]  1  2  3  4  5  6  7  8  9 10
> y[c(T,F)]#循环输出对错对错的值
[1] 1 3 5 7 9
> y[c(T,F,F)]
[1]  1  4  7 10
> y[c(T,F,T,F,T,T,T,T,T,T,T)]#当多一个逻辑次是,会显示空白NA
[1]  1  3  5  6  7  8  9 10 NA
> y[y>5]#检索大于5的值
[1]  6  7  8  9 10
> y[y>5 & y<9]#通过&来合并两个检索命令
[1] 6 7 8
> z<-c("one","two","three","four","five")
> "one" %in% z#使用 %in%来检索字符串one是否在向量z中,有则返还TURE
[1] TRUE
> z[z %in% c("one","two")]#加方括号列出检索出来的字符串
[1] "one" "two"
> z %in% c("one","two")
[1]  TRUE  TRUE FALSE FALSE FALSE
> 

名称索引

代码语言:R复制
> y<-c(1:5)
> y
[1] 1 2 3 4 5
> names(y)<-c("one","two","three","four","five")#使用names函数来对向量的每个值来命名
> y
  one   two three  four  five 
    1     2     3     4     5 
> y["one"]#通过搜索名称来索引值
one 
  1 

修改向量,添加删除数据

代码语言:R复制
> x<-c(1:10)
> x
 [1]  1  2  3  4  5  6  7  8  9 10
> x[11]<-11#通过方括号对还没有的位置进行赋值
> x
 [1]  1  2  3  4  5  6  7  8  9 10 11
> v<-c(1:3)
> v[c(4,5,6)]<-c(4,5,6)#通过向量将两个向量连接
> v
[1] 1 2 3 4 5 6
> v[20]<-20#当赋值的地方超过已有的,没有赋值的地方表示为NA
> v
 [1]  1  2  3  4  5  6 NA NA NA NA NA NA NA NA NA NA NA NA NA 20
> append(v,9,after = 8)#对向量v在第8位后面赋值9
 [1]  1  2  3  4  5  6 NA NA  9 NA NA NA NA NA NA NA NA NA NA NA 20
> v[2]<-4#直接对第几位向量进行赋值修改
> v
 [1]  1  4  3  4  5  6 NA NA NA NA NA NA NA NA NA NA NA NA NA 20

向量计算

代码语言:R复制
> x<-c(1:10)
> x 1
 [1]  2  3  4  5  6  7  8  9 10 11
> x-3
 [1] -2 -1  0  1  2  3  4  5  6  7
> x*1
 [1]  1  2  3  4  5  6  7  8  9 10
> x*2
 [1]  2  4  6  8 10 12 14 16 18 20
 > y<-seq(from=1,to=100,length.out=10)
> y
 [1]   1  12  23  34  45  56  67  78  89 100
> x y
 [1]   2  14  26  38  50  62  74  86  98 110
> x*y
 [1]    1   24   69  136  225  336  469  624  801 1000
> x**2#两个星号代表次方
 [1]   1   4   9  16  25  36  49  64  81 100
 > x%%2#两个百分号代表余数
 [1] 1 0 1 0 1 0 1 0 1 0
> x%/%2
 [1] 0 1 1 2 2 3 3 4 4 5
> z<-c(1,2)
> x z#当两个向量长度不一样时,短的向量就会被循环运算到长向量中
 [1]  2  4  4  6  6  8  8 10 10 12
> x*z
 [1]  1  4  3  8  5 12  7 16  9 20
> z[3]<-3
> z
[1] 1 2 3
> x z#当长短向量不是背书关系时,就会报错
 [1]  2  4  6  5  7  9  8 10 12 11 #Warning message:#In x   z : 长的对象长度不是短的对象长度的整倍数
> x>5
 [1] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
> x>=5#x大于等于5
 [1] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
> x %in% y#表示左边的向量在右边的向量中检索
 [1]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 > c(1,2,3) %in% c(1,2,4,24)
[1]  TRUE  TRUE FALSE
> x ==y#两个等号就是判断是否相等,一个等号就是直接赋值
 [1]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

0 人点赞