从子集化数据表返回数据表

时间:2014-10-10 16:40:28

标签: r data.table

好吧也许我正在测试整个 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的新手(很明显),但对于一个编程人员来说,这似乎非常像是为了让自己变得迟钝。

1 个答案:

答案 0 :(得分:3)

您是否已安装并加载了最新版本的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最新的一个,所以我想你可能只有一个旧版本的表。见阿伦的评论。