Griera-yandex
2017-Nov-20 11:46 UTC
[R-es] Transformación (logarítmica) de varias variables
Hola, buenos días: Habitualmente transformo varias variables mediante la función lapply de la forma siguiente: --------------- library (MASS); data(Aids2, package = "MASS");DADES<-Aids2 detach ("package:MASS", unload<-TRUE) LN <- function (X) { X <- log (X) X } XVARL <- c ("diag", "death") DADES [XVARL] <- lapply(DADES [XVARL], LN) --------------- El problema con este código es que pierdo la variable original. Intento cambiar la variable original (añadiendo el sufijo «_LN» al nombre original) mediante el código: --------------- LN <- function (X) { X <- log (X) X } XVARL <- c ("diag", "death") DADES [[paste (deparse (substitute (XVARL)), "_LN", sep = "")]] <- lapply(DADES [XVARL], LN) --------------- que, evidentemente, no funciona (el código es fruto de una importante empanada mental con R): ---------------> DADES [[paste (deparse (substitute (XVARL)), "_LN", sep = "")]] <- lapply(DADES [XVARL], LN)Error in `[[<-.data.frame`(`*tmp*`, paste(deparse(substitute(XVARL)), : replacement has 2 rows, data has 2843 --------------- Alguien me podría echar una mano para poder transformar las variables sin perder las originales. De momento lo hago creándolas previamente. Pero buscaba una forma de ahorrármelo. Muchas gracias y saludos. Griera.
Griera-yandex
2017-Nov-20 14:27 UTC
[R-es] Transformación (logarítmica) de varias variables
Hola: Me contesto a mi mismo con una posible solución: --------------------------- library (MASS); data(Aids2, package = "MASS");DADES<-Aids2 detach ("package:MASS", unload<-TRUE) LN <- function (X) { X <- log (X) X } XVARL = c ("diag", "death") XVARLf = paste(XVARL, "_LN", sep = "") # https://stackoverflow.com/questions/14872081/adding-a-prefix-to-column-names DADES [XVARLf] <- c (lapply(DADES [XVARL], LN)) str (DADES) --------------------------- Igual existe una solución mejor, pero esta parece funcionar. Muchas gracias y saludos. Griera. On Mon, 20 Nov 2017 12:46:11 +0100 Griera-yandex <griera en yandex.com> wrote:> Hola, buenos días: > > Habitualmente transformo varias variables mediante la función lapply de la forma siguiente: > > --------------- > library (MASS); data(Aids2, package = "MASS");DADES<-Aids2 > detach ("package:MASS", unload<-TRUE) > LN <- function (X) { > X <- log (X) > X > } > XVARL <- c ("diag", "death") > DADES [XVARL] <- lapply(DADES [XVARL], LN) > --------------- > > El problema con este código es que pierdo la variable original. Intento cambiar la variable original (añadiendo el sufijo «_LN» al nombre original) mediante el código: > > --------------- > LN <- function (X) { > X <- log (X) > X > } > XVARL <- c ("diag", "death") > DADES [[paste (deparse (substitute (XVARL)), "_LN", sep = "")]] <- lapply(DADES [XVARL], LN) > --------------- > > que, evidentemente, no funciona (el código es fruto de una importante empanada mental con R): > > --------------- > > DADES [[paste (deparse (substitute (XVARL)), "_LN", sep = "")]] <- lapply(DADES [XVARL], LN) > Error in `[[<-.data.frame`(`*tmp*`, paste(deparse(substitute(XVARL)), : replacement has 2 rows, data has 2843 > --------------- > > Alguien me podría echar una mano para poder transformar las variables sin perder las originales. De momento lo hago creándolas previamente. Pero buscaba una forma de ahorrármelo. > > Muchas gracias y saludos. Griera.