variable name multiple loop create concatenate r assign r-faq

name - ¿Cómo nombrar variables sobre la marcha?



create variable name in loop r (6)

¿Es posible crear nuevos nombres de variables sobre la marcha?

Me gustaría leer marcos de datos de una lista en nuevas variables con números al final. Algo como orca1, orca2, orca3 ...

Si intento algo como

paste("orca",i,sep="")=list_name[[i]]

Me sale este error

target of assignment expands to non-language object

¿Conoces alguna otra manera de resolver esto?


Me parece que podría estar mejor con una lista en lugar de usar orca1 , orca2 , etc., entonces sería orca[1] , orca[2] , ...

Usualmente está haciendo una lista de variables diferenciadas por nada más que un número porque ese número sería una forma conveniente de acceder a ellas más tarde.

orca <- list() orca[1] <- "Hi" orca[2] <- 59

De lo contrario, assign es justo lo que quieres.


No hagas marcos de datos. Guarde la lista, nombre sus elementos pero no los adjunte.

La razón principal de esto es que si hace variables sobre la marcha, casi siempre tendrá que iterar a través de cada una de ellas para realizar algo útil. Allí nuevamente se verá obligado a iterar a través de cada uno de los nombres que ha creado sobre la marcha.

Es mucho más fácil nombrar los elementos de la lista e iterar a través de los nombres.

En lo que se refiere a la conexión, su práctica de programación es realmente mala en R y puede llevar a muchos problemas si no tiene cuidado.


Otra solución difícil es nombrar elementos de la lista y attach :

list_name = list( head(iris), head(swiss), head(airquality) ) names(list_name) <- paste("orca", seq_along(list_name), sep="") attach(list_name) orca1 # Sepal.Length Sepal.Width Petal.Length Petal.Width Species # 1 5.1 3.5 1.4 0.2 setosa # 2 4.9 3.0 1.4 0.2 setosa # 3 4.7 3.2 1.3 0.2 setosa # 4 4.6 3.1 1.5 0.2 setosa # 5 5.0 3.6 1.4 0.2 setosa # 6 5.4 3.9 1.7 0.4 setosa


Use asignar:

assign(paste("orca",i,sep=""), list_name[[i]])


Y esta opción?

list_name<-list() for(i in 1:100){ paste("orca",i,sep="")->list_name[[i]] }

Funciona perfectamente En el ejemplo que pones, falta la primera línea y luego aparece el mensaje de error.


Preguntas frecuentes dice:

Si usted tiene

varname <- c("a", "b", "d")

tu puedes hacer

get(varname[1]) + 2

para

a + 2

o

assign(varname[1], 2 + 2)

para

a <- 2 + 2

Por lo tanto, parece que usa GET cuando quiere evaluar una fórmula que usa una variable (como una concatenación) y ASSIGN cuando desea asignar un valor a una variable preestablecida.

Sintaxis para asignar: assign (x, value)

x: un nombre de variable, dado como una cadena de caracteres. No se realiza ninguna coacción, y se utilizará el primer elemento de un vector de caracteres de longitud superior a uno, con una advertencia.

valor: valor que se asignará a x.