Преобразование строки в имя переменной
Я использую R для разбора списка строк в форме:
original_string <- "variable_name=variable_value"
во-первых, я извлекаю имя переменной и значение из исходной строки и преобразовать значение числового класса.
parameter_value <- as.numeric("variable_value")
parameter_name <- "variable_name"
затем я хотел бы присвоить значение переменной с тем же именем, что и строка parameter_name.
variable_name <- parameter_value
что такое / являются ли функции для этого?
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
есть еще одно простое решение нашли там: 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]))