建立命名向量

可以通過多種方式建立命名向量。用 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