¿Cómo podemos seleccionar múltiples columnas usando un vector de sus índices numéricos (posición) en data.table
?
Así es como lo haríamos con un data.frame
:
df <- data.frame(a = 1, b = 2, c = 3)
df[ , 2:3]
# b c
# 1 2 3
r
data.table
jamborta
fuente
fuente
dt[,"a"]
ydt[,"a", with=FALSE]
vea qué opción útil es realmente.DT[,list(b:c)
, como me pareció conveniente transformar las columnas directamente en la tabla de datos, por ejemplo, puedo hacerloDT[,list(1/b,2*c)]
, pero esto no funciona con.with=FALSE
innecesario en este caso: github.com/Rdatatable/data.table/issues/…data.frame
forma compatible de usarwith=FALSE
. Sin embargo, a partir de hace aproximadamente 3 semanas, la versión de desarrollo de data.table se ha modificado para llamadas comodt[, 2]
,dt[, 2:3]
,dt[, "b"]
, ydt[, c("b", "c")]
se comportan de la misma como lo hacen en la condata.frame
s sin tener que establecer explícitamentewith=FALSE
. ¡Es fantástico! Consulte aquí la confirmación particular, incluida la entrada NOTICIAS que describe el cambio.Es un poco detallado, pero me he acostumbrado a usar la
.SD
variable oculta .Es un poco complicado, pero no pierde otras características de tabla de datos (no creo), por lo que aún debería poder usar otras funciones importantes como unir tablas, etc.
fuente
Si desea usar nombres de columna para seleccionar las columnas, simplemente use
.()
, que es un alias paralist()
:fuente
Desde v1.10.2 en adelante, también puede usar
..
fuente
dt[, !..keep_cols]
ydt[, -..keep_cols]
funciona como se esperaba!@ Tom, muchas gracias por señalar esta solución. Funciona muy bien para mí.
Estaba buscando una manera de excluir una columna de la impresión y del ejemplo anterior. Para excluir la segunda columna, puede hacer algo como esto
fuente