跳转到内容

统计分析:使用 R 入门/R/访问向量元素

来自维基教科书,开放世界中的开放书籍
通常需要访问向量中的某些元素:例如,我们可能只想使用第 10 个元素,或者前 4 个元素,或者根据元素的值选择元素。执行此操作的方法是获取向量并添加索引运算符 [](即方括号)。如果这些方括号包含
  • 正数或数字,则此操作将选择向量中的那些特定元素
  • 负数或数字,则此操作将选择整个向量,除了那些元素
  • 逻辑向量,则逻辑向量的每个元素表示是否选择(如果为 TRUE)或不选择(如果为 FALSE)原始向量的等效元素[1]
使用逻辑向量可能看起来有点复杂。但是,它们非常有用,因为它们是使用比较运算符的关键。例如,可以使用这些运算符来识别哪个美国州面积较小,面积小于(<)10000 平方英里(如下所示)。
输入
min(state.area)    #This gives the area of the smallest US state...
which.min(state.area) #... this shows which element it is (the 39th as it happens) 
state.name[39]     #You can obtain individual elements by using square brackets
state.name[39] <- "THE SMALLEST STATE" #You can replace elements using [] too
state.name       #The 39th name ("Rhode Island") should now have been changed
state.name[1:10]    #This returns a new vector consisting of only the first 10 states
state.name[-(1:10)]  #Using negative numbers gives everything but the first 10 states
state.name[c(1,2,2,1)] #You can also obtain the same element multiple times
###Logical vectors are a little more complicated to get your head round
state.area < 10000       #A LOGICAL vector, identifying which states are small
state.name[state.area < 10000] #So this can be used to select the names of the small states
结果
> min(state.area) # 这将给出美国最小州的面积...

[1] 1214 > which.min(state.area) # ... 这将显示它是什么元素(恰好是第 39 个) [1] 39 > state.name[39] # 你可以使用方括号获得单个元素 [1] "Rhode Island" > state.name[39] <- "The smallest state" # 你也可以使用 [] 替换元素 > state.name # 第 39 个名称("Rhode Island")现在应该已更改

[1] "Alabama"      "Alaska"       "Arizona"      "Arkansas"     
[5] "California"     "Colorado"      "Connecticut"    "Delaware"     
[9] "Florida"      "Georgia"      "Hawaii"       "Idaho"       

[13] "Illinois" "Indiana" "Iowa" "Kansas" [17] "Kentucky" "Louisiana" "Maine" "Maryland" [21] "Massachusetts" "Michigan" "Minnesota" "Mississippi" [25] "Missouri" "Montana" "Nebraska" "Nevada" [29] "New Hampshire" "New Jersey" "New Mexico" "New York" [33] "North Carolina" "North Dakota" "Ohio" "Oklahoma" [37] "Oregon" "Pennsylvania" "THE SMALLEST STATE" "South Carolina" [41] "South Dakota" "Tennessee" "Texas" "Utah" [45] "Vermont" "Virginia" "Washington" "West Virginia" [49] "Wisconsin" "Wyoming" > state.name[1:10] # 这将返回一个新向量,其中仅包含前 10 个州

[1] "Alabama"   "Alaska"   "Arizona"   "Arkansas"  "California" "Colorado"  
[7] "Connecticut" "Delaware"  "Florida"   "Georgia"  

> state.name[-(1:10)] # 使用负数将给出除前 10 个州之外的所有内容

[1] "Hawaii"       "Idaho"       "Illinois"      "Indiana"      
[5] "Iowa"        "Kansas"       "Kentucky"      "Louisiana"     
[9] "Maine"       "Maryland"      "Massachusetts"   "Michigan"     

[13] "Minnesota" "Mississippi" "Missouri" "Montana" [17] "Nebraska" "Nevada" "New Hampshire" "New Jersey" [21] "New Mexico" "New York" "North Carolina" "North Dakota" [25] "Ohio" "Oklahoma" "Oregon" "Pennsylvania" [29] "THE SMALLEST STATE" "South Carolina" "South Dakota" "Tennessee" [33] "Texas" "Utah" "Vermont" "Virginia" [37] "Washington" "West Virginia" "Wisconsin" "Wyoming" > state.name[c(1,2,2,1)] # 你也可以多次获取同一个元素 [1] "Alabama" "Alaska" "Alaska" "Alabama" > ### 逻辑向量有点难以理解 > state.area < 10000 # 一个逻辑向量,识别哪些州面积较小

[1] FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE TRUE FALSE FALSE FALSE FALSE

[16] FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE [31] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE TRUE [46] FALSE FALSE FALSE FALSE FALSE > state.name[state.area < 10000] # 因此,这可用于选择面积较小的州的名称 [1] "Connecticut" "Delaware" "Hawaii" "Massachusetts" [5] "New Hampshire" "New Jersey" "THE SMALLEST STATE" "Vermont"

虽然 [] 运算符可用于访问向量的单个元素,但它对于一次访问多个元素特别有用。另一个运算符,双方括号 ([[) 专门用于访问单个元素。虽然对于向量来说它并不特别有用,但对于 # 列表# 数据帧 来说它非常有用。


  1. 如果逻辑向量比原始向量短,则它将依次重复,直到达到正确的长度
华夏公益教科书