Data.table: 符号.I不分组时保持一致

创建于 2018-01-30  ·  5评论  ·  资料来源: Rdatatable/data.table

在我确定之前就已经出现了,但是找不到问题或SO帖子。 有人记得或有链接吗? 我似乎记得回想过这样的话:“根据文档,“ .I打算用于分组,但是也可以将其扩展到非分组”。 手册页仍包含.I的单词“ while grouping”。

v1.10.4-3和dev中的当前行为:

> X = data.table(c("a","a","b","c","c"), 10:14)
> setkey(X,V1)
>  X["b"]
   V1 V2
1:  b 12       # ok
> X["b", .I]
[1] 1          # expected x's row number 3  (*1)
> X["b", .I, by=.EACHI]
   V1 I
1:  b 3        # ok
> X["b", .(.I,V2)]
   I V2
1: 1 12      # expected x's row number 3 not 1  (*2)
> X["b", .(.I,V2), by=.EACHI]
   V1 I V2
1:  b 3 12     # ok
> 

现在, which=TRUE可以用于第一种情况(* 1):

> X["b", which=TRUE]
[1] 3

除非您首先明确地将x的行号添加为一列,否则目前无法j2)内包含x的行号.I在简单的情况下( 1)which=TRUE参数,因为我的猜测是人们可以买到.I首先。

bug consistency

最有用的评论

抱歉,我没有意识到这个主意! 这意味着这是一个好主意,对吗?

所有5条评论

有人记得或有链接吗?

我们可以将.I用于全局而不是分组的行号,将.i用于本地,从而仅用于内部的行号吗?

弗兰克(Frank)提到的@dracodoc #1206

抱歉,我没有意识到这个主意! 这意味着这是一个好主意,对吗?

来自https://github.com/Rdatatable/data.table/issues/539的示例

dt <- data.table(a=sample(letters, 100, T), b=rnorm(100))
dt[ a=="c", list(.N, .I)]
   N .I
1: 4  1
2: 4  2
3: 4  3
4: 4  4

dt[a=="c", list(.N, .I), by=a]
   a N .I
1: c 4 54
2: c 4 67
3: c 4 71
4: c 4 86
此页面是否有帮助?
0 / 5 - 0 等级

相关问题

sengoku93 picture sengoku93  ·  3评论

alex46015 picture alex46015  ·  3评论

mattdowle picture mattdowle  ·  3评论

jangorecki picture jangorecki  ·  3评论

rafapereirabr picture rafapereirabr  ·  3评论