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