2

如果我有以下情况:

a<-data.table(id=rep(letters[1:4],2), var=c(1,2,1:6), key="id,var")

我可以复制“通常a[a$id=="a" & a$var==1,]

> a[.("a",1)]
   id var
1:  a   1

但是呢a[a$var==1,]?如果我改变"a"整个id专栏,我不会得到我所期望的:

> a[.(id,1)]
   id var
1:  a   1
2:  a   1
3:  b   1
4:  b   1
5:  c   1
6:  c   1
7:  d   1
8:  d   1

提前致谢。

4

1 回答 1

3

尝试这个:

> a[ .(unique(id), 1),, nomatch = 0 ]
   id var
1:  a   1
2:  c   1

添加。id我们可以通过将其作为一个因素并使用级别来避免扫描:

> a<-data.table(id=factor(rep(letters[1:4],2)), var=c(1,2,1:6), key="id,var")
> a[ .(levels(id), 1),, nomatch = 0 ]
   id var
1:  a   1
2:  c   1
于 2013-05-26T18:01:28.197 回答