在我确定之前就已经出现了,但是找不到问题或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的行号添加为一列,否则目前无法在j
( 2)内包含x的行号.I
在简单的情况下( 1)which=TRUE
参数,因为我的猜测是人们可以买到.I
首先。
有人记得或有链接吗?
可能是您要查找的内容: https : https://github.com/Rdatatable/data.table/issues/1494尽管标题应为“ .I in DT [i, .I]应该返回DT的行号而不是DT [i]“(不带BY),因为当存在BY =时,它已经具有该行为了……?
关于.I和by =的另一个问题https://github.com/Rdatatable/data.table/issues/1206
我们可以将.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
最有用的评论
抱歉,我没有意识到这个主意! 这意味着这是一个好主意,对吗?