Tengo un data.table con el que me gustaría realizar la misma operación en ciertas columnas. Los nombres de estas columnas se dan en un vector de caracteres. En este ejemplo en particular, me gustaría multiplicar todas estas columnas por -1.
Algunos datos de juguetes y un vector que especifica columnas relevantes:
library(data.table)
dt <- data.table(a = 1:3, b = 1:3, d = 1:3)
cols <- c("a", "b")
Ahora mismo lo estoy haciendo de esta manera, recorriendo el vector de caracteres:
for (col in 1:length(cols)) {
dt[ , eval(parse(text = paste0(cols[col], ":=-1*", cols[col])))]
}
¿Hay alguna forma de hacer esto directamente sin el bucle for?
fuente
set
con unfor-loop
. Sospecho que será más rápido.set
antes.for
bucle conset
para casos como este.set()
parece más rápido, ¡~ 4 veces más rápido para mi conjunto de datos! Asombroso.