R语言基础教程 | 数据结构—向量

一、简介

R拥有许多用于存储数据的对象类型,包括标量、向量、矩阵、数组、数据框和列表。它们在存储数据的类型、创建方式、结构复杂度,以及用于定位和访问其中个别元素的标记等方面均有所不同。下图给出了这些数据结构的一个示意图。

图片

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

图片

一、创建向量

1. c()

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

> a <- c(1,2,3,4,5,6)
> b <- c("aaa","bbb","ccc")
> c <- c(TRUE,FALSE)

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

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

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


> b <- c(2,3, 4, 5, 6)
> b
[1] 2 3 4 5 6

2.创建向量的函数seq()函数

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

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

(2) 也可以不指定步长,指定个数,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

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

> seq(17)
 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17

> seq(-6)
[1]  1  0 -1 -2 -3 -4 -5 -6

(4) 不指定起始值,就不能定义步长

> seq(9,by=2)
错误于seq.default(9, by = 2) : 'by'参数的正負號不对

更多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)

二、访问向量中的元素

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

> a <- c(1,2,3,4,5,6)


> a[1:3]
[1] 1 2 3


> a[c(1,3)]   # 给了一个向量c()
[1] 1 3

三、向量的其他操作

1. rep()函数

rep()函数可以用来重复复制元素。

# 把1重复五遍
> rep(1,5)         
[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


# 1-4重复2次
> rep(1:4, 2)
[1] 1 2 3 4 1 2 3 4

# 1-4的每个元素重复2次,注意和上面的区别
> 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

# each = 2指定了1-4每个元素重复2次,理论上有8个元素,但又指定的元素的总长度len = 4,因此后面的3 3 4 4没有显示。
> rep(1:4, each = 2, len = 4)
[1] 1 1 2 2


# 指定了总长度为len = 10,但rep(1:4, each = 2)的结果只要8个元素。不足10个,会从头自动补齐。所以多了1 1.
> rep(1:4, each = 2, len = 10)
 [1] 1 1 2 2 3 3 4 4 1 1

# 先每个元素重复2次后,再重复3次
> 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

2. c() 向量连接

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

> 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

3. 向量拼接

# 按列拼接
> 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

4. 向量运算

长度相等的向量进行加减乘除运算时,对应元素进行相应的运算

> c1 <- c(1,2,3,4)
> c2<- c(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

如果2个向量长度不等,会按照短的向量重复运算补齐

> c3 <- c(c1,c2)
> c1+c3
[1]  2  4  6  8  6  8 10 12

转自:https://mp.weixin.qq.com/s?__biz=MzA4NDAzODkzMA==&mid=2651263668&idx=1&sn=879cecbb60a399ddfcb9329dd54f1c91&chksm=841ef6c9b3697fdf1955c64a02818fda7be681db94447ddeceeffc8e9d467bf089ff1dd9a308&scene=21#wechat_redirect

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,036评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,046评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,411评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,622评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,661评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,521评论 1 304
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,288评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,200评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,644评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,837评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,953评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,673评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,281评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,889评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,011评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,119评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,901评论 2 355

推荐阅读更多精彩内容