使用变量创建数据框列名或列表元素

时间:2018-04-19 09:53:04

标签: r list dataframe

要创建data.frame或列表,我可以写

data.frame(yo=1:2, wesh=3:4)

  yo wesh
1  1    3
2  2    4

list(yo=1:2, wesh=3:4)

$yo
[1] 1 2

$wesh
[1] 3 4

但如果我写

i <- "yo"
data.frame(i=1:2, wesh=3:4)

   i wesh
1  1    3
2  2    4

list(i=1:2, wesh=3:4)
$i
[1] 1 2

$wesh
[1] 3 4

i不会在输出中更新为“yo”。如何使它成为可能?

1 个答案:

答案 0 :(得分:2)

原因是因为在data.frame()中将其定义为变量的名称时不会对其进行评估。请尝试data.frame(i = i, wesh = 3:4)查看差异。但是,解决方法可以是使用setNames,即

setNames(data.frame(1:2, 3:4), c(i, 'wesh'))

#same for lists
#setNames(list(1:2, 3:4), c(i, 'wesh'))

给出,

   yo wesh
1  1    3
2  2    4