前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言基础教程——第3章:数据结构——向量

R语言基础教程——第3章:数据结构——向量

作者头像
DoubleHelix
发布2019-08-07 14:26:18
8350
发布2019-08-07 14:26:18
举报
文章被收录于专栏:生物信息云生物信息云
如果学过像JAVA或者C这样的高级语言,都知道,数据类型的概念,包括,整数型、浮点型、字符串、布尔类型。这些语言中,定义变量需要定义数据类型,而在R中不需要。只需要直接赋值即可。在给变量赋值时,R中可以用<-或者=进行赋值。比如:num <- 1213,cha<- "BioInfoCloud"。R拥有许多用于存储数据的对象类型,包括标量、向量、矩阵、数组、数据框和列表。它们在存储数据的类型、创建方式、结构复杂度,以及用于定位和访问其中个别元素的标记等方面均有所不同。下图给出了这些数据结构的一个示意图。

对于数据的运算,和其他语言差不多。

向量

1

向量的创建

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

代码语言:javascript
复制
> 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中的第二个和第四个元素。

代码语言:javascript
复制
> a[c(2, 4)]

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

2

创建向量的函数

seq()函数

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

代码语言:javascript
复制
> v1 = seq(1,9,by =2)
> v1

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

代码语言:javascript
复制
> seq(0, 1, length.out = 11)

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

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

更多seq()的使用方法通过help("seq")查看。

代码语言:javascript
复制
## 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()函数可以用来重复复制元素。

代码语言:javascript
复制
> 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

向量连接

代码语言:javascript
复制
> 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
#要注意的是,向量连接只能用于同一类型的数据,同为数值,同为字符串或布尔值。

向量拼接

代码语言:javascript
复制
> 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

向量运算

代码语言:javascript
复制
#长度相等的向量进行加减乘除运算时,对应元素进行相应的运算。
> 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
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MedBioInfoCloud 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档