【问题标题】:subsetting columns in a datatable [duplicate]数据表中的子集列[重复]
【发布时间】:2016-11-26 01:42:12
【问题描述】:

示例 R 数据框:

n = c(2, 3, 5) 
s = c("aa", "bb", "cc") 
b = c(TRUE, FALSE, TRUE) 
df = data.frame(n, s, b)  

我可以像这样轻松地对数据框中的列进行子集化:

df.smaller <- df[c(1,2)]

  n  s
1 2 aa
2 3 bb
3 5 cc

非常方便!

但是,使用数据表(我认为使用数据表更容易)我还没有找到如此快速的方法来做同样的事情。如何快速轻松地对数据表执行相同操作?

dt = data.table(df)
dt.smaller <- dt[c(1,2)]

   n  s     b
1: 2 aa  TRUE
2: 3 bb FALSE

将返回前两行。可能它只是一个逗号或我必须更改的东西,但我无法弄清楚。

【问题讨论】:

  • First result 来自谷歌搜索...
  • 我也看到了。但我认为必须有更简单的方法,例如 df[c(1,2)]。如果没有,就足够公平了。
  • 请阅读vignettes

标签: r dataframe data.table


【解决方案1】:

我们需要使用with = FALSE

dt[, 1:2, with = FALSE]

这在?data.table中有解释

with:默认情况下with=TRUE,j在x的框架内求值; 列名可以用作变量。

当 with=FALSE j 是列名的字符向量时,数字 要选择的列位置向量或 startcol:endcol 形式, 并且返回的值始终是 data.table。 with=FALSE 通常是 在 data.table 中用于动态选择列

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-01
    • 2015-10-04
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 2019-09-06
    • 2019-03-16
    相关资源
    最近更新 更多