跳轉到內容

統計分析:使用 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. 如果邏輯向量比原始向量短,則它將依次重複,直到達到正確的長度
華夏公益教科書