如果列名data.table是在的形式number + character,例如:4PCS,5Y等等,怎么会是这样的引用j在x[i,j]这样它被解释为不带引号的列名.
我认为这将解决我原来的问题.我想在表格中的'data.table'中添加几个列number + character.
M <- data.table('4PCS'=1:4,'5Y'=4:1,X5Y=2:5)
> M[,4PCS+5Y]
Error: unexpected symbol in "M[,4PCS"
Run Code Online (Sandbox Code Playgroud)
新列应该是的总和4PSC及5Y.
有没有办法如何data.table在没有引用形式的情况下引用它们?如果这些列data.table引用了引用的"逻辑" data.frame:
> M[,'5Y',with=FALSE]
5Y
[1,] 4
[2,] 3
[3,] 2
[4,] 1
Run Code Online (Sandbox Code Playgroud)
那么这种参考的功能将受到限制.添加不起作用,因为它不起作用data.frame:
> M[,'4PCS'+'5Y',with=FALSE]
Error in "4PCS" + "5Y" : non-numeric argument to binary operator
Run Code Online (Sandbox Code Playgroud)
该data.table功能允许在列上操作.我想在新data.table逻辑中找到一个解决方案,因此我可以使用它通过列名引用转换列的能力.
问题是:
如何引用以数字开头的列名,以便data.table逻辑理解它是列名.
Aru*_*run 14
我想,这就是你在寻找的,不确定.data.table是不同的data.frame.请查看快速介绍,然后查看常见问题解答(如有必要,还可参考参考手册).
require(data.table)
dt <- data.table("4PCS" = 1:3, y=3:1)
# 4PCS y
# 1: 1 3
# 2: 2 2
# 3: 3 1
# access column 4PCS
dt[, "4PCS"]
# returns a data.table
# 4PCS
# 1: 1
# 2: 2
# 3: 3
# to access multiple columns by name
dt[, c("4PCS", "y")]
Run Code Online (Sandbox Code Playgroud)
或者,如果您需要访问该列而不是结果data.table,而不是向量,则可以使用$表示法访问:
dt$`4PCS` # notice the ` because the variable begins with a number
# [1] 1 2 3
# alternatively, as mnel mentioned under comments:
dt[, `4PCS`]
# [1] 1 2 3
Run Code Online (Sandbox Code Playgroud)
或者,如果您知道可以使用的列号,请[[.]]按以下方式访问:
dt[[1]] # 4PCS is the first column here
# [1] 1 2 3
Run Code Online (Sandbox Code Playgroud)
编辑:
谢谢@joran.我想你正在寻找这个:
dt[, `4PCS` + y]
# [1] 4 4 4
Run Code Online (Sandbox Code Playgroud)