tutorial rpubs publicar pestañas examples español app aplicaciones r global environment assign assignment-operator

rpubs - Asigne múltiples objetos a.GlobalEnv desde dentro de una función



shiny en r tutorial (1)

Actualización de 2018-10-10:

La manera más sucinta de llevar a cabo esta tarea específica es usar list2env() así:

## Create an example list of five data.frames df <- data.frame(x = rnorm(25), g = rep(factor(LETTERS[1:5]), 5)) LIST <- split(df, df$g) ## Assign them to the global environment list2env(LIST, envir = .GlobalEnv) ## Check that it worked ls() ## [1] "A" "B" "C" "D" "df" "E" "LIST"

Respuesta original, demostrando el uso de assign ().

Tienes razón en que assign() es la herramienta adecuada para el trabajo. envir argumento que lo envir le brinda un control preciso sobre dónde se realiza la asignación, control que no está disponible con <- o <<- .

Entonces, por ejemplo, para asignar el valor de X a un objeto llamado NAME en el entorno global, haría lo siguiente:

assign("NAME", X, envir = .GlobalEnv)

En tu caso:

df <- data.frame(x = rnorm(25), g = rep(factor(LETTERS[1:5]), 5)) LIST <- split(df, df$g) NAMES <- c("V", "W", "X", "Y", "Z") lapply(seq_along(LIST), function(x) { assign(NAMES[x], LIST[[x]], envir=.GlobalEnv) } ) ls() [1] "df" "LIST" "NAMES" "V" "W" "X" "Y" "Z"

Una publicación aquí hace un día me hace preguntarme cómo asignar valores a múltiples objetos en el entorno global desde dentro de una función. Este es mi intento de usar lapply ( assign puede ser más seguro que <<- pero nunca lo he usado y no estoy familiarizado con él).

#fake data set df <- data.frame( x.2=rnorm(25), y.2=rnorm(25), g=rep(factor(LETTERS[1:5]), 5) ) #split it into a list of data frames LIST <- split(df, df$g) #pre-allot 5 objects in R with class data.frame() V <- W <- X <- Y <- Z <- data.frame() #attempt to assign the data frames in the LIST to the objects just created lapply(seq_along(LIST), function(x) c(V, W, X, Y, Z)[x] <<- LIST[[x]])

Por favor, siéntase libre de acortar cualquiera o todas las partes de mi código para que esto funcione (o funcione mejor / más rápido).