Data.table: Símbolo .I consistencia cuando no agrupa

Creado en 30 ene. 2018  ·  5Comentarios  ·  Fuente: Rdatatable/data.table

Esto ha surgido antes de que esté seguro, pero no puedo encontrar el problema o la publicación SO. Alguien recuerda o tiene los enlaces por favor? Me parece recordar haber respondido a alguien algo como " .I está diseñado para usarse en agrupaciones según la documentación, pero sería bueno extenderlo también a no agrupaciones". La página de manual todavía contiene las palabras "al agrupar" para .I .

Comportamiento actual tanto en v1.10.4-3 como en 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
> 

Ahora, which=TRUE fue pensado y funciona para el primer caso (* 1):

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

pero incluir los números de fila de x dentro de j ( 2) no es posible actualmente, a menos que primero agregue los números de fila de x explícitamente como una columna. which=TRUE ya que supongo que la gente alcanza .I primero.

bug consistency

Comentario más útil

¡Lo siento, no me di cuenta de que hay un hilo en esta idea! Eso significa que es una buena idea, ¿verdad?

Todos 5 comentarios

Alguien recuerda o tiene los enlaces por favor?

¿Podemos usar .I para global, por lo tanto, número de fila sin agrupación, y .i para local, por lo tanto, solo dentro de la agrupación?

@dracodoc como lo menciona Frank este es el # 1206

¡Lo siento, no me di cuenta de que hay un hilo en esta idea! Eso significa que es una buena idea, ¿verdad?

ejemplo de 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
¿Fue útil esta página
0 / 5 - 0 calificaciones