Cómo llamar a un objeto con la variable de caracteres del mismo nombre

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.