reorganizar - ordenar un data frame en r por una columna
Aplique una función a un subconjunto de columnas data.table, por columnas-índices en lugar de nombre (1)
Intento aplicar una función a un grupo de columnas en una tabla de datos grande sin referirme a cada una individualmente.
a <- data.table(
a=as.character(rnorm(5)),
b=as.character(rnorm(5)),
c=as.character(rnorm(5)),
d=as.character(rnorm(5))
)
b <- c(''a'',''b'',''c'',''d'')
con el MWE arriba, esto:
a[,b=as.numeric(b),with=F]
funciona, pero esto:
a[,b[2:3]:=data.table(as.numeric(b[2:3])),with=F]
no funciona ¿Cuál es la forma correcta de aplicar la función as.numeric
a solo las columnas 2 y 3 de a
sin referirse a ellas individualmente?
(En el conjunto de datos reales hay decenas de columnas, por lo que no sería práctico)
El enfoque idiomático es usar .SD
y .SDcols
Puede forzar que se evalúe el RHS en el marco principal envolviendo ()
a[, (b) := lapply(.SD, as.numeric), .SDcols = b]
Para columnas 2: 3.
a[, 2:3 := lapply(.SD, as.numeric), .SDcols = 2:3]
o
mysubset <- 2:3
a[, (mysubset) := lapply(.SD, as.numeric), .SDcols = mysubset]