Como chamar um object com a variável de caractere de mesmo nome

Estou tentando escrever uma function em R para analisar em lote um número de arquivos de maneira semelhante. Os arquivos são da class ExpressionSetIllumina . Eu posso fazer um vetor de caracteres (string) com nomes de todos os arquivos no diretório e carregar cada um deles:

 list = list.files() for (i in list[1]) { load(i) } 

Isso carrega arquivos corretamente

 > ls() [1] "i" "list" "SSD.BA.vsn" > class(SSD.BA.vsn) [1] "ExpressionSetIllumina" attr(,"package") [1] "beadarray" 

O que quero fazer agora é usar i (cadeia de caracteres "SSD.BA.vsn" ) para atribuir o object SSD.BA.vsn a um novo object de dados para que:

 >data = SomeFunction(i) >class(data) [1] "ExpressionSetIllumina" attr(,"package") [1] "beadarray" 

Mas o que eu tentei até agora apenas retorna dados como um vetor de caractere do mesmo valor que eu ou não funciona de todo. Então, eu me pergunto se há uma function que faria isso para mim ou se eu precisava fazer isso de outra maneira.

Eu tenho o nome de um object ou variável armazenado como uma string em um vetor de caracteres. Como posso usar o nome do object de string para fazer algo com o object?

Eu acho que você quer get .

 data < - get(i) 

Dito isso, uma vez que você começa a usar get (e sua contraparte, assign ), você geralmente acaba com um horrível código ilegível.

Para análises em lotes como a sua, geralmente é melhor ler todos os seus dados em uma lista de frameworks de dados e, em seguida, fazer uso liberal do lapply . Algo como:

 data_files < - list.files() all_vars <- lapply(data_files, function(file) { vars_loaded <- load(file) mget(vars_loaded, parent.frame()) }) 

mget é a versão do get que recupera várias variables ​​de uma só vez. Aqui é usado para recuperar todas as coisas que foram carregadas pela chamada para carregar.

Agora você tem uma lista de listas: a lista de nível superior está relacionada ao arquivo, as listas de nível inferior contêm as variables ​​carregadas desse arquivo.