【问题标题】:Returning a data table from a subsetted data table从子集数据表返回数据表
【发布时间】:2014-10-10 16:40:28
【问题描述】:

好吧,也许我正在测试整个 no-stupid-question 哲学的界限,但是有人可以直接告诉我如何将数据表的列子集到另一个数据表中吗?

假设我在下面创建了这个数据表,我想要一个新的数据表,其中只有三列中的两列。

example <- data.table(c("Bob","May","Sue","Bob","Sue","Bob"), 
                      c("A","A","A","A","B","B"),  
                      as.Date(c("2010/01/01", "2010/01/01", "2010/01/01", 
                      "2012/01/01", "2012/01/11", "2014/01/01")))

我试图理解 datatable-faq(http://cran.r-project.org/web/packages/data.table/vignettes/datatable-faq.pdf) 中的第 1.3 节和第 1.4 节,因为我的结果是一个新的数据表,而不是一个字符向量。根据常见问题解答,这是通过使用 DT[,.()] 来完成的,但是我对此的尝试:

example[,.(V2,V3)]
Error in eval(expr, envir, enclos) : could not find function "."

如果我猜的话,这在我看来像是某种版本控制问题,但我有最新版本的 R,并且该常见问题解答已在一周前更新。

出于好奇和旁注,有人知道为什么子设置数据表的默认结果不是另一个数据表吗?我是 R 的新手(显然),但对于一个编程人员来说,这似乎很像为了变得迟钝而竭尽全力。

【问题讨论】:

  • .() in j 是list()别名,是自 1.9.4 以来的一项新功能。请更新您的 data.table 版本。
  • 果然行得通。事情是我想到了这一点,并从 R Studio 中的包更新下拉列表中运行 install all 无济于事。无论如何,再次感谢。

标签: r data.table


【解决方案1】:

您是否安装并加载了最新版本的data.table 软件包?

install.packages('data.table')
require(data.table)

example <- data.table(c("Bob","May","Sue","Bob","Sue","Bob"), 
                      c("A","A","A","A","B","B"),  
                      as.Date(c("2010/01/01", "2010/01/01", "2010/01/01", 
                                "2012/01/01", "2012/01/11", "2014/01/01")))


example[,.(V2,V3)]
#   V2         V3
#1:  A 2010-01-01
#2:  A 2010-01-01
#3:  A 2010-01-01
#4:  A 2012-01-01
#5:  B 2012-01-11
#6:  B 2014-01-01

我知道 CRAN 的最新版本,所以我想您可能只有旧版本的表。请参阅 Arun 的评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    相关资源
    最近更新 更多