R语言-向量

一.产生方式

1.利用关键字c(先定义c,再赋值给变量)

> c(1:3)               使用的冒号用于生成一个数值序列
[1] 1 2 3
> 
> a<-c(1:3)
> a
[1] 1 2 3

 a(5,2,9,12)
Error in a(5, 2, 9, 12) : could not find function "a"
> c(5,2,9,12)
[1]  5  2  9 12
> a<-c(1:4)
> a
[1] 1 2 3 4

2. b<-seq(from=,to=,by=)      生成从(from)...到(to)...      by是步长  

> b<-seq(2,100,3)
> b
 [1]  2  5  8 11 14 17 20 23 26 29 32 35 38 41 44 47 50 53 56 59 62 65 68
[24] 71 74 77 80 83 86 89 92 95 98
> 

3. d<-rep(x1,x2)      生成长度为x2, 值全是x1的向量

> d<-rep(0,5)
> d
[1] 0 0 0 0 0
> 

二.修改向量函数

1.插入数据append()

(1)末尾插入append(向量名,插入的数据)     默认是插入末尾

> a<-c(5,2,9,3)
> a
[1] 5 2 9 3
> append(a,100)
[1]   5   2   9   3 100
> 

(2)指定位置插入  append(向量名, 插入的数据, after)

after为要插入的位置

> a<-c(5,2,9,3)
> a
[1] 5 2 9 3
> append(a,100)
[1]   5   2   9   3 100
> 
> 
> append(a,66,1)
[1]  5 66  2  9  3
> 

 注意:发现第二次插入时第一次插入的10不见了,原因是第一次插入后没有赋值给a,所以a没有变化

2.删除数据

a[-1]              删除第一个数

a[-c(3:4)]      删除a中的 第三到 第四个数

> a
[1] 5 2 9 3
> a[-1]
[1] 2 9 3
> a
[1] 5 2 9 3
> a[-c(3:4)]
[1] 5 2
> 

三.其他函数

sum(x)       #和

max(x)       #最大值

min(x)        #最小值

range(x)     #取值范围

mean(x)     #平均值

var(x)          #方差

sort(x)         # 自然顺序, 从小 到大排列

rev(x)          #反排列,  从大到小排序 rev(sort(x))

prod(x)       #乘积,     阶乘prod(1:n)

> a<-c(1:4)
> a
[1] 1 2 3 4
> sum(a)
[1] 10
> max(a)
[1] 4
> min(a)
[1] 1
> range(a)
[1] 1 4
> mean(a)
[1] 2.5
> var(a)
[1] 1.666667
> rev(sort(a))
[1] 4 3 2 1
> prod(a)
[1] 24
> 

 

一.向量的创建

向量是用于存储数值型、字符型逻辑型数据的一维数组。执行组合功能的函数c()可用来创建向量。各类向量如下例所示:

这里,a是数值型向量,b是字符型向量,而c是逻辑型向量。

注意,单个向量中的数据必须拥有相同的类型或模式(数值型、字符型或逻辑型)。同一向量中无法混杂不同模式的数据。

> a<-c(1,2,3,4,5,6)
> b<-c("www","bioinformatics","cn")
> c<-c(TRUE,FALSE)

通过在方括号中给定元素所处位置的数值,我们可以访问向量中的元素。例如,a[c(2, 4)]用于访问向量a中的第二个和第四个元素。

使用的冒号用于生成一个数值序列。例如,a <- c(2:6)等价于a <- c(2,3, 4, 5, 6)

二.创建向量的函数

1.seq()函数

seq()函数可以用来创建  向量,下面是创建1-9,步长为2 向量。

> v1=seq(1,9,by=2)
> v1
[1] 1 3 5 7 9

也可以不指定步长,指定个数,R会自己计算步长

> seq(0,1,length.out=11)
 [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

如果不写开始的数和步长,默认从1开始,步长为1

不指定起始值,就不能定义步长。

2.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] 1 2 3 4 1 2 3 4
> 
> rep(1:4,each=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)
[1] 1 1 2 2
> 
> 
> rep(1:4,each=2,len=10)
 [1] 1 1 2 2 3 3 4 4 1 1
> 
> rep(1:4,each=2,times=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
> 
> 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

三.向量连接

要注意的是,向量连接只能用于同一类型的数据,同为数值,同为字符串或布尔值。

向量拼接

> 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
> 

三.向量运算

#长度相等的向量进行加减乘除运算时,对应元素进行相应的运算。
> 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

 

 

 

 

 

 

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangchuang2017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值