gpt4 book ai didi

r - 如何在data.table中引用以数字开头的列名

转载 作者:行者123 更新时间:2023-12-04 05:53:27 24 4
gpt4 key购买 nike

如果data.table中的列名采用number + character的形式,例如:4PCS5Y等,那么如何将其在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"

新列应为 4PSC5Y的总和。

有没有一种方法可以在 data.table中以无引号的形式引用它们?如果这些列在 data.table中以 data.frame的引号“逻辑”引用:
> M[,'5Y',with=FALSE]
5Y
[1,] 4
[2,] 3
[3,] 2
[4,] 1

那么这种引用的功能将受到限制。由于在 data.frame中不起作用,因此添加项不起作用:
> M[,'4PCS'+'5Y',with=FALSE]  
Error in "4PCS" + "5Y" : non-numeric argument to binary operator
data.table功能将允许对列进行操作。我想在新的 data.table逻辑中找到一个解决方案,因此我可以使用其通过列名引用转换列的功能。

问题是:
如何引用以数字开头的列名,以便data.table逻辑可以理解它是列名。

最佳答案

我认为,这是您要寻找的,不确定。 data.tabledata.frame不同。请先查看quick introduction,然后再查看FAQ(如果需要,还请参阅引用手册)。

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")]

另外,如果您需要访问该列而不是 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

或者,如果您知道列号,则可以使用 [[.]]如下访问:
dt[[1]] # 4PCS is the first column here
# [1] 1 2 3

编辑:

谢谢@joran。我认为您正在寻找这个:
dt[, `4PCS` + y]
# [1] 4 4 4

从根本上讲,问题在于 4CPS在R中不是有效的变量名(尝试 4CPS <- 1,您将收到相同的“意外符号”错误)。因此要引用它,我们必须使用反引号(比较 `4CPS` <- 1)

关于r - 如何在data.table中引用以数字开头的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15637132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com