【发布时间】:2016-08-25 19:22:10
【问题描述】:
我尝试向数据框中添加一个具有指定列名的新列。
这行得通:
dat = data.frame(x1 = 1:10,
x2 = 101:110,
x3 = 1:2,
x4 = 2:1)
cbind(dat, 'x10' = 1:10)
结果:
x1 x2 x3 x4 x10
1 1 101 1 2 1
2 2 102 2 1 2
3 3 103 1 2 3
4 4 104 2 1 4
5 5 105 1 2 5
6 6 106 2 1 6
7 7 107 1 2 7
8 8 108 2 1 8
9 9 109 1 2 9
10 10 110 2 1 10
但使用函数表达式作为列名不起作用
cbind(dat, paste0('x10', '_flag') = 1:10)
错误:“cbind(dat, paste0('x10', '_flag') ="
中出现意外的 '='
我在想
column_name = paste0('x10', '_flag')
cbind(dat, column_name = 1:10)
但它将“column_name”作为列名,而不是它所引用的字符串(感谢@42-纠正我)
如何让 R 知道 paste0() 只是一个字符串?我试过as.character(paste0()),但没有用。任何帮助表示赞赏。谢谢!
【问题讨论】:
-
不幸的是,第二种方法不会解释
column_name所以你最终会得到dat$column_name是 1:10 而不是你希望的。参数名称的表达式不会在给定函数的配对列表中得到解释。您可以使用assign(在第一个参数位置)获得对被评估为字符值的表达式的解释,但它最终会成为一种非常庞大的代码,通常意味着有更好的选择。
标签: r string columnname