data.table 使用 df[, i] 获取列

问题描述 投票:0回答:1

我正在使用

data.table
包。

library(data.table)
df = data.table(col1 = c(2,4,6), 
                col2 = c(4,6,8), 
                col3 = c(8,10,12), 
                col4 = c(20,16,14))
i = 2
df[,3]
df[,i+1]
df[,i]
df[,..i]
df[,..(i+1)]

df[,3]
给出第三列:

   col3
1:    8
2:   10
3:   12

但是

df[,i+1]
只给出一个数字
3
。这是我不明白的地方。它适用于本机 data.frame。为什么它不能像 data.frame 那样工作?

此外,

df[,i]
引发了错误,这建议我使用
df[,..i]
,它给出了第二列。 然而,
df[,..(i+1)]
引发了错误:
Error in ..(i + 1) : could not find function ".."

有人介意帮助我理解其中的差异吗?

说出这些尝试之间的差异。这里的机制是什么?

r dataframe error-handling data.table
1个回答
1
投票

您可以阅读

data.table
的帮助文档,并在输入
with = 
时查看如何使用
?..


> df[, i + 1, with = FALSE]
    col3
   <num>
1:     8
2:    10
3:    12

> df[, i + 1]
[1] 3

默认情况下,with=TRUE,j 在 x 的框架内求值;柱子 名称可以用作变量。如果变量名称重叠 在数据集和父范围内,您可以使用双点前缀 ..cols 显式引用 'cols 变量父范围而不是来自 你的数据集。

当 j 是列名的字符向量时,数值向量为 要选择的列位置或格式为 startcol:endcol,以及 返回的值始终是一个data.table。 with=FALSE 不是必需的 不再动态选择列。请注意 x[, cols] 是 相当于 x[, ..cols] 和 x[, cols, with=FALSE] 和 x[, .SD, .SDcols=列].

© www.soinside.com 2019 - 2024. All rights reserved.