对于数据的运算,和其他语言差不多。
向量
1
向量的创建
向量是用于存储数值型、字符型或逻辑型数据的一维数组。执行组合功能的函数c()可用来创建向量。各类向量如下例所示:
> a <- c(1,2,3,4,5,6)
> b <- c("www","bioinfocloud","cn")
> c <- c(TRUE,FALSE)
这里,a是数值型向量,b是字符型向量,而c是逻辑型向量。注意,单个向量中的数据必须拥有相同的类型或模式(数值型、字符型或逻辑型)。同一向量中无法混杂不同模式的数据。
通过在方括号中给定元素所处位置的数值,我们可以访问向量中的元素。例如,a[c(2, 4)]用于访问向量a中的第二个和第四个元素。
> a[c(2, 4)]
使用的冒号用于生成一个数值序列。例如,a <- c(2:6)等价于a <- c(2,3, 4, 5, 6)。
2
创建向量的函数
seq()函数
seq()函数可以用来创建向量,下面是创建1-9,步长为2 向量。
> v1 = seq(1,9,by =2)
> v1
也可以不指定步长,指定个数,R会自己计算步长。
> seq(0, 1, length.out = 11)
如果不写开始的数和步长,默认从1开始,步长为1。
不指定起始值,就不能定义步长。
更多seq()的使用方法通过help("seq")查看。
## Default S3 method:
seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),
length.out = NULL, along.with = NULL, ...)
seq.int(from, to, by, length.out, along.with, ...)
seq_along(along.with)
seq_len(length.out)
rep()函数
rep()函数可以用来重复复制元素。
> rep(1,5) #把1重复五遍
[1] 1 1 1 1 1
> v1 <-c(11,12,13,14,15)
> rep(v1,2)
[1] 11 12 13 14 15 11 12 13 14 15
> rep(1:4, 2)#1-4重复2次
[1] 1 2 3 4 1 2 3 4
> rep(1:4, each = 2)# 1-4的每个元素重复2次,注意和上面的区别。
[1] 1 1 2 2 3 3 4 4
> rep(1:4, c(2,2,2,2))#指定每个元素的重复次数。
[1] 1 1 2 2 3 3 4 4
> rep(1:4, c(2,1,2,1))#指定每个元素的重复次数。
[1] 1 1 2 3 3 4
> rep(1:4, each = 2, len = 4)
# each = 2指定了1-4每个元素重复2次,理论上有8个元素,
# 但又指定的元素的总长度len = 4,因此后面的3 3 4 4没有显示。
[1] 1 1 2 2
> rep(1:4, each = 2, len = 10)
# 指定了总长度为len = 10,但rep(1:4, each = 2)的结果只要8个元素
# 不足10个,会从头自动补齐。所以多了1 1.
[1] 1 1 2 2 3 3 4 4 1 1
> rep(1:4, each = 2, times = 3)#先每个元素重复2次后,再重复3次
[1] 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4
向量连接
> c1 <- c(1,2,3,4)
> c1
[1] 1 2 3 4
> c2<- c(5,6,7,8)
> c2
[1] 5 6 7 8
> c3 <- c(c1,c2)
> c3
[1] 1 2 3 4 5 6 7 8
#要注意的是,向量连接只能用于同一类型的数据,同为数值,同为字符串或布尔值。
向量拼接
> cbind(c1,c2)#按列拼接
c1 c2
[1,] 1 5
[2,] 2 6
[3,] 3 7
[4,] 4 8
> rbind(c1,c2)#按行拼接
[,1] [,2] [,3] [,4]
c1 1 2 3 4
c2 5 6 7 8
3
向量运算
#长度相等的向量进行加减乘除运算时,对应元素进行相应的运算。
> c1+c2
[1] 6 8 10 12
> c1*c2
[1] 5 12 21 32
> c1/c2
[1] 0.2000000 0.3333333 0.4285714 0.5000000
> c1+c3
# 如果2个向量长度不等,会按照短的向量重复运算补齐
[1] 2 4 6 8 6 8 10 12
本文分享自 MedBioInfoCloud 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!