函数表达式不能用作 R 中的列名
functional expression not work as column name in R
我尝试使用指定的列名向数据框中添加一个新列。
这个有效:
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)
Error: unexpected '=' in "cbind(dat, paste0('x10', '_flag') ="
我在想
column_name = paste0('x10', '_flag')
cbind(dat, column_name = 1:10)
但它会将 "column_name" 作为列名,而不是它引用的字符串(感谢 @42- 纠正我)
如何让R知道paste0()
只是一个字符串?我试过 as.character(paste0())
但没有成功。任何帮助表示赞赏。谢谢!
而不是使用 cbind
,您应该学习使用 "["
,因为它确实在 j 参数位置(第一个逗号之后)接受计算的列名称:
> dat[ , paste0('x10', '_flag') ] = 1:10
> dat
x1 x2 x3 x4 x10_flag
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
这相当于与“[[”
的类似策略
dat[[ paste0('x10', '_flag') ]] = 1: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)
Error: unexpected '=' in "cbind(dat, paste0('x10', '_flag') ="
我在想
column_name = paste0('x10', '_flag')
cbind(dat, column_name = 1:10)
但它会将 "column_name" 作为列名,而不是它引用的字符串(感谢 @42- 纠正我)
如何让R知道paste0()
只是一个字符串?我试过 as.character(paste0())
但没有成功。任何帮助表示赞赏。谢谢!
而不是使用 cbind
,您应该学习使用 "["
,因为它确实在 j 参数位置(第一个逗号之后)接受计算的列名称:
> dat[ , paste0('x10', '_flag') ] = 1:10
> dat
x1 x2 x3 x4 x10_flag
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
这相当于与“[[”
的类似策略dat[[ paste0('x10', '_flag') ]] = 1:10
注意:这避免了不幸的新手尝试使用 $