Estoy tratando de aprender el paquete data.table
en R
. Tengo una tabla de datos llamada DT1
y un marco de datos DF1
, y me gustaría subconjunto algunas instancias según una condición lógica (disyunción). Este es mi código de momento:¿Cómo traducirías esto al lenguaje del paquete data.table en R?
DF1[DF1$c1==0 | DF1$c2==1,] #the data.frame way with the data.frame DF1
DT1[DT1$c1==0 | DT1$c2==1,] #the data.frame way with the data.table DT1
En la página 5 de "Introduction to the data.table package in R", el autor da un ejemplo de algo similar, pero con una conjunción (sustituir |
por &
en la segunda línea de arriba) y comentarios que es un mal uso de data.table
paquete. Sugiere que TODO esta manera siguiente:
setkey(DT1,c1,c2)
DT1[J(0,1)]
Por lo tanto, mi pregunta es: ¿Cómo puedo escribir la condición de disyunción con la sintaxis data.table
paquete? ¿Es un mal uso mi segunda línea DT1[DT1$c1==0 | DT1$c2==1,]
? ¿Hay un equivalente al J
pero para la disyunción?
Creo que su respuesta es la exploración vectorial. Gracias de todos modos @DWin! – Nestorghh
Sí, eso es 3 escaneos vectoriales (dos '==' y uno '|') más asignaciones de vectores asociadas como se describe en la viñeta introductoria. Ese documento muestra algo similar para demostrar que el uso malo no es bueno. @Nestorghh ¿Pero realmente quiso decir disjuntado en dos columnas ('c1' y' c2')? Dislocada dentro de una columna es la respuesta de Christoph: 'J (c (0,1))'. Disyunto a través de dos columnas es el escaneo vectorial por ahora hasta que se incorporen las claves secundarias, o busque "clave secundaria manual" para un método más oneroso mientras tanto. –
Vi que se llamaba "mala" práctica, pero no vi un ejemplo de "uso correcto" que se aplicaría en este caso de dos columnas, ni encontré uno en las preguntas frecuentes, ni en la búsqueda de los archivos, ni en varios intentos de experimentación. –