Data.table: Последовательность символа .I при отсутствии группировки

Созданный на 30 янв. 2018  ·  5Комментарии  ·  Источник: Rdatatable/data.table

Это возникло раньше, чем я уверен, но я не могу найти проблему или сообщение SO. Кто-нибудь помнит или пожалуйста ссылки? Кажется, я помню, как я отвечал кому-то что-то вроде « .I предназначено для использования в группировке согласно документации, но было бы неплохо расширить его и на отсутствие группировки». На странице руководства по-прежнему есть слова «при группировке» для .I .

Текущее поведение как в 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 явно в качестве столбца. which=TRUE аргумента .I первый.

bug consistency

Самый полезный комментарий

Извините, я не понял, что на эту идею есть целая ветка! Значит, это хорошая идея?

Все 5 Комментарий

Кто-нибудь помнит или пожалуйста ссылки?

Можем ли мы использовать .I для глобального номера строки без группировки и .i для локального, то есть только внутри группировки?

@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 рейтинги