que - Cómo llamar a un objeto con la variable de caracteres del mismo nombre
tipos de variables en java ejemplos (1)
Intento escribir una función en R para analizar por lotes una cantidad de archivos de manera similar. Los archivos son de la clase ExpressionSetIllumina
. Puedo hacer un vector de caracteres (cadena) con nombres de todos los archivos en el directorio y cargar cada uno de ellos:
list = list.files()
for (i in list[1]) {
load(i)
}
Esto carga los archivos correctamente
> ls()
[1] "i" "list" "SSD.BA.vsn"
> class(SSD.BA.vsn)
[1] "ExpressionSetIllumina"
attr(,"package")
[1] "beadarray"
Lo que quiero hacer ahora es usar i
(cadena de caracteres "SSD.BA.vsn"
) para asignar el objeto SSD.BA.vsn
a un nuevo dato de objeto para que:
>data = SomeFunction(i)
>class(data)
[1] "ExpressionSetIllumina"
attr(,"package")
[1] "beadarray"
Pero todo lo que he intentado hasta ahora solo devuelve datos como un vector de caracteres del mismo valor que yo o que no funciona en absoluto. Entonces me pregunto si hay una función que lo haría por mí o si tengo que hacerlo de otra manera.
Tengo el nombre de un objeto o variable almacenado como una cadena en un vector de caracteres. ¿Cómo puedo usar el nombre del objeto de cadena para hacer algo al objeto?
Creo que quieres get
data <- get(i)
Dicho esto, una vez que empiezas a utilizar get
(y su homólogo, assign
), generalmente terminas con un código horrible ilegible.
Para análisis por lotes como el suyo, a menudo es mejor leer todos sus datos en una lista de marcos de datos, luego haga un uso liberal de lapply
. Algo como:
data_files <- list.files()
all_vars <- lapply(data_files, function(file)
{
vars_loaded <- load(file)
mget(vars_loaded, parent.frame())
})
mget
es la versión de get
que recupera múltiples variables a la vez. Aquí se usa para recuperar todas las cosas cargadas por la llamada para cargar.
Ahora tiene una lista de listas: la lista de nivel superior está relacionada con el archivo, las listas de nivel inferior contienen las variables cargadas desde ese archivo.