assign
хорошо, но я не нашел функции для обращения к переменной, которую вы создали в автоматическом скрипте. (as.name
кажется, работает наоборот). Более опытные программисты, несомненно, найдут лучшее решение, но это решение работает и, возможно, немного смешно, так как заставляет R писать код для себя.
Скажем, я только что присвоил значение 5 x
(var.name <- "x"; assign(var.name, 5)
) и хочу изменить его на 6. Если я пишу скрипт и заранее не знаю, как называется переменная (var.name
) ) будет (что, кажется, является точкой функции assign
), я не могу просто поставить x <- 6
, потому что var.name
мог бы быть "y"
. Итак, я делаю:
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
будет изменено на 6, и если имя переменной отличалось от "x"
, эта переменная также будет изменена на 6.