建立命名向量
可以通過多種方式建立命名向量。用 c
:
xc <- c('a' = 5, 'b' = 6, 'c' = 7, 'd' = 8)
這導致:
> xc
a b c d
5 6 7 8
與 list
:
xl <- list('a' = 5, 'b' = 6, 'c' = 7, 'd' = 8)
這導致:
> xl
$a
[1] 5
$b
[1] 6
$c
[1] 7
$d
[1] 8
使用 setNames
函式,可以使用兩個相同長度的向量來建立命名向量:
x <- 5:8
y <- letters[1:4]
xy <- setNames(x, y)
這導致一個命名的整數向量:
> xy
a b c d
5 6 7 8
可以看出,這給出了與 c
方法相同的結果。
你也可以使用 names
函式獲得相同的結果:
xy <- 5:8
names(xy) <- letters[1:4]
使用這樣的向量,也可以按名稱選擇元素:
> xy["c"]
c
7
此功能使得可以使用這樣的命名向量作為查詢向量/表,以將值與資料幀中的另一個向量或列的值進行匹配。考慮以下資料幀:
mydf <- data.frame(let = c('c','a','b','d'))
> mydf
let
1 c
2 a
3 b
4 d
假設你要在 mydf
資料框中建立一個名為 num
的新變數,並在行中使用 xy
中的正確值。使用 match
函式可以選擇 xy
中的相應值:
mydf$num <- xy[match(mydf$let, names(xy))]
這導致:
> mydf
let num
1 c 7
2 a 5
3 b 6
4 d 8