Преобразование строки в имя переменной


Я использую R для разбора списка строк в форме:

original_string <- "variable_name=variable_value"

во-первых, я извлекаю имя переменной и значение из исходной строки и преобразовать значение числового класса.

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

затем я хотел бы присвоить значение переменной с тем же именем, что и строка parameter_name.

variable_name <- parameter_value

что такое / являются ли функции для этого?

8 69

8 ответов:

присвоить то, что вы ищете.

assign("x", 5)

x
[1] 5

но покупатель будет бдителен.

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

вы можете использовать do.звоните:

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

есть еще одно простое решение нашли там: http://www.r-bloggers.com/converting-a-string-to-a-variable-name-on-the-fly-and-vice-versa-in-r/

чтобы преобразовать строку в переменную:

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

и наоборот:

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

использовать x=as.name ("строка") затем вы можете использовать x для ссылки на переменную со строкой имени.

Я не знаю, правильно ли он отвечает на ваш вопрос

strsplit чтобы проанализировать ваш ввод и, как упоминал Грег,assign для назначения переменных.

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 это хорошо, но я не нашел функцию для ссылки на переменную, которую вы создали в автоматическом скрипте. (as.name Кажется, работает наоборот). Более опытные кодеры, несомненно, будут иметь лучшее решение, но это решение работает и немного юмористично, возможно, в том, что он получает R, чтобы написать код для себя, чтобы выполнить.

скажем, я только что присвоил значение 5 x (var.name <- "x"; assign(var.name, 5)) и я хочу изменить значение на 6. Если я пишу сценарий и не знаю заранее, что такое имя переменной (var.name) будет (что, кажется, точка

по какой-то причине я не могу комментировать, только ответить, поэтому, пожалуйста, кто-то с правом, прикрепите это как комментарий к последнему ответу: Функция, которую вы ищете (для обращения к значению переменной, имя которой сделано автоматически) - get (), по крайней мере, это работает для меня:

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

Я работал с этим несколько дней назад, и заметил, что иногда вам нужно использовать get() функция для печати результатов вашей переменной. т. е. :

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

оттуда, если вы попытаетесь напечатать переменную varnames[1], он возвращает 'jan'. Чтобы обойти это, вам нужно сделать print(get(varnames[1]))