8.向量的索引

索引:访问向量中元素的方法
1.正负整数索引:根据元素在集合中的位置进行访问
2.逻辑向量索引
3.名称索引

1.正负数索引

> x <- (1:100)
> x
  [1]   1   2   3   4   5   6   7   8   9  10  11  12  13
 [14]  14  15  16  17  18  19  20  21  22  23  24  25  26
 [27]  27  28  29  30  31  32  33  34  35  36  37  38  39
 [40]  40  41  42  43  44  45  46  47  48  49  50  51  52
 [53]  53  54  55  56  57  58  59  60  61  62  63  64  65
 [66]  66  67  68  69  70  71  72  73  74  75  76  77  78
 [79]  79  80  81  82  83  84  85  86  87  88  89  90  91
 [92]  92  93  94  95  96  97  98  99 100
> length(x) #X中有100个元素
[1] 100
> x[1]  #访问X中的第一个元素,R中第一个是从1 开始而不是从0开始
[1] 1
> x[0]  #0不是正整数无法访问
integer(0)
> x[-19]  #访问除了-19 的其他元素
 [1]   1   2   3   4   5   6   7   8   9  10  11  12  13
[14]  14  15  16  17  18  20  21  22  23  24  25  26  27
[27]  28  29  30  31  32  33  34  35  36  37  38  39  40
[40]  41  42  43  44  45  46  47  48  49  50  51  52  53
[53]  54  55  56  57  58  59  60  61  62  63  64  65  66
[66]  67  68  69  70  71  72  73  74  75  76  77  78  79
[79]  80  81  82  83  84  85  86  87  88  89  90  91  92
[92]  93  94  95  96  97  98  99 100
> x[c(4:18)]  #访问4到18号元素
 [1]  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18
> x[c(1,23,45,67,89)]  #访问第1,23,45,67,89元素
[1]  1 23 45 67 89
> x[c(11,11,23,23,4,90,2)]  #可重复且不用按顺序索引
[1] 11 11 23 23  4 90  2
> x[c(-2,3,4)]  #不能同时用正数负数索引,逻辑不通
Error in x[c(-2, 3, 4)] : 只有负下标里才能有零

2.逻辑向量索引:相当于if条件语句

> y <- c(1:10) #定义y向量为1到10
> y
[1]  1  2  3  4  5  6  7  8  9 10
> y[c(T,F,T,F,T,F,T,F,T,F)]  
[1] 1 3 5 7 9
> y[c(T)] #默认全部为true
[1]  1  2  3  4  5  6  7  8  9 10
> y[c(F)]  #默认全部为false
integer(0)
> y[c(T,F)]  #以TF,TF,TF,TF,TF....的顺序展示元素
[1] 1 3 5 7 9
> y[c(T,F,F)] #以TFF,TFF,TFF....的顺序展示元素
[1] 1 3 5 7 9
[1]  1  4  7 10
> y[c(T,F,T,F,T,F,T,F,T,F,T)] #第十一个是空的
[1]  1  3  5  7  9 NA
> y[y>5]
[1]  6  7  8  9 10
> y[y>5 & y<9]  #y>5和y<9 
[1] 6 7 8
> z <- c("one","two","three","four","five")
> z
[1] "one"   "two"   "three" "four"  "five" 
> "one" %in% z  #"one"是否在向量z中
[1] TRUE
> z["one" %in% z]  #"one"是否在向量z中---True 相当于z[TRUE]
[1] "one"   "two"   "three" "four"  "five" 
> z[z %in% c("one","two")]
[1] "one" "two"
> z %in% c("one","two")
[1]  TRUE  TRUE FALSE FALSE FALSE
> k <- z %in% c("one","two")
> z[k]
[1] "one" "two"

3.名称索引

> names(y) 
NULL
> names(y) <- c("one","two","three","four","five","six","seven","eight","nine","ten")  
> y
  one   two three  four  five   six seven eight  nine   #name属性
    1     2     3     4     5     6     7     8     9 #name属性值称为value
  ten 
   10 

可以通过每个元素的name访问name属性值(一一对应)

> euro   #访问向量中的名称属性
        ATS         BEF         DEM         ESP         FIM         FRF 
  13.760300   40.339900    1.955830  166.386000    5.945730    6.559570 
        IEP         ITL         LUF         NLG         PTE 
   0.787564 1936.270000   40.339900    2.203710  200.482000 
> euro["ATS"] #使用每个元素名称访问元素的值
    ATS 
13.7603 
> y["one"]
one 
  1 

4增加或删除元素

> x[101] <- 101 #增加1个元素
> v[c(4,5,6)] <- c(4,5,6)  #增加多个元素
> v
[1] 1 2 3 4 5 6
> v[20] <- 4 #在第20位增加一个元素,中间的为NA
> v
 [1]  1  2  3  4  5  6 NA NA NA NA NA NA NA NA NA NA NA NA NA  4
> append(x=v,value=99,after=5) #用append函数在向量中间插入值,在5位后也就是6位处插入值
 [1]  1  2  3  4  5 99  6 NA NA NA NA NA NA NA NA NA NA NA NA NA  4
> append(x=v,value=99,after=0)  #用append函数在向量中间插入值,在0位后也就是1位处插入值
 [1] 99  1  2  3  4  5  6 NA NA NA NA NA NA NA NA NA NA NA NA NA  4
> rm(v)  #删除向量v
> v
错误: 找不到对象'v'
> y[-c(1:3)]  #删除y向量中的1到3位元素
 four  five   six seven eight  nine   ten 
    4     5     6     7     8     9    10 
> y <- y[-c(1:3)]#删除y向量中的1到3位元素并将值重新赋给y
> y
 four  five   six seven eight  nine   ten 
    4     5     6     7     8     9    10 
> y["four"] <- 100  #将four的值赋为100
> y
 four  five   six seven eight  nine   ten 
  100     5     6     7     8     9    10 
> y[2] <- 15将2位的值赋为15
> y
 four  five   six seven eight  nine   ten 
  100    15     6     7     8     9    10 
> y[2] <- "one" 5将2位的值赋为"one",则整个向量变成字符型向量
> y
 four  five   six seven eight  nine   ten 
"100" "one"   "6"   "7"   "8"   "9"  "10" 
> 
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容