Converter string em um nome de variável

Eu estou usando R para analisar uma lista de seqüências de caracteres no formulário:

original_string <- "variable_name=variable_value" 

Primeiro, extraio o nome e o valor da variável da string original e converto o valor em class numérica.

 parameter_value <- as.numeric("variable_value") parameter_name <- "variable_name" 

Então, gostaria de atribuir o valor a uma variável com o mesmo nome da string parameter_name.

 variable_name <- parameter_value 

Quais são as funções para fazer isso?

atribuir é o que você está procurando.

 assign("x", 5) x [1] 5 

mas comprador beware.

Veja R FAQ 7.21 http://cran.r-project.org/doc/FAQ/R-FAQ.html#How-can-I-turn-a-string-into-a-variable_003f

Você pode usar do.call:

  do.call("<-",list(parameter_name, parameter_value)) 

Há outra solução simples encontrada lá: http://www.r-bloggers.com/converting-a-string-to-a-variable-name-on-the-fly-and-vice-versa-in-r/

Para converter uma string em uma variável:

 x <- 42 eval(parse(text = "x")) [1] 42 

E o oposto:

 x <- 42 deparse(substitute(x)) [1] "x" 

use x = as.name (“string”) você pode usar então use x para se referir à variável com string de nome.

Eu não sei se responde a sua pergunta corretamente

strsplit para analisar sua input e, como Greg mencionou, assign para atribuir as variables.

 original_string <- c("x=123", "y=456") pairs <- strsplit(original_string, "=") lapply(pairs, function(x) assign(x[1], as.numeric(x[2]), envir = globalenv())) ls() 

assign é bom, mas não encontrei uma function para referenciar a variável que você criou em um script automatizado. ( as.name parece funcionar do jeito oposto). Codificadores mais experientes, sem dúvida, terão uma solução melhor, mas esta solução funciona e é um pouco humorística, talvez, na medida em que obtém R para escrever código para si mesmo para executar.

Digamos que eu tenha acabado de atribuir o valor 5 a x ( var.name <- "x"; assign(var.name, 5) ) e quero alterar o valor para 6. Se eu estou escrevendo um script e não sei em antecipadamente qual será o nome da variável ( var.name ) (que parece ser o ponto da function assign ), não posso simplesmente colocar x <- 6 porque var.name pode ter sido "y" . Então eu faço:

 var.name <- "x" #some other code... assign(var.name, 5) #some more code... #write a script file (1 line in this case) that works with whatever variable name write(paste0(var.name, " <- 6"), "tmp.R") #source that script file source("tmp.R") #remove the script file for tidiness file.remove("tmp.R") 

x será alterado para 6, e se o nome da variável for diferente de "x" , essa variável será alterada para 6.

Por alguma razão eu não posso comentar, apenas responda, então por favor, alguém com o direito, anexe isso como um comentário para a última resposta: A function que você está procurando (para referir ao valor da variável que nome é feito automaticamente) é get (), pelo menos funciona para mim:

assign ("abc",5) get("abc")

Eu estava trabalhando com isso há alguns dias e notei que às vezes você precisa usar a function get() para imprimir os resultados de sua variável. ie:

 varnames = c('jan', 'feb', 'march') file_names = list_files('path to multiple csv files saved on drive') assign(varnames[1], read.csv(file_names[1]) # This will assign the variable 

A partir daí, se você tentar imprimir a variável varnames[1] , ela retornará ‘jan’. Para contornar isso, você precisa fazer print(get(varnames[1]))