Я пытаюсь построить динамическую функцию, использующую Eval, разобрать, или что-то работаетR - передать глобальную переменную в функцию, изменить его и сохранить
Намерение функции: значение сеттера. вход
Параметр: список, имя элемента списка, значение
Возврат: не интересует
Текущий код
#call fun_lsSetValue(state_list,selected,"dropdown")
fun_lsSetValue <- function(ls,name,value){
pars <- as.list(match.call()[-1])
element <- as.character(eval(expression(pars$name)))
if(is.null(value))
eval(parse(text="ls[[element]] <- ''"))
else
eval(parse(text="ls[[element]] <- value"))
#part that I need help, I need to assign ls to "state_list" without
#having to hard coded it in this function
#I have tried everything I can think of like
#assign(deparse(substitute(ls)),ls,.GlobalEnv)
#state_list <<- ls works, but I want to be dynamic
}
Проблема, которую я нашел, мне нужно передать значение локальной переменной «ls», где она исходила из динамического состояния (state_list) Я знаю a < - функция (a, name, value) {... return (a)} работает, но этот синтаксис действительно не является моим предпочтением. Поскольку я пытаюсь узнать, можно ли сделать то же самое без назначенной стороны функции. Любое пособие было бы полезно.
прологе на этот вопрос ... просто неправильно. В R стратегия состоит в том, чтобы вернуть значение, а не «установить» значение. Существует функция '<< -', которая, вероятно, работает лучше, чем вы кодируете, но она устарела для регулярного использования. Может, вам нужен другой язык? –
Остановите пытать часть языка, чтобы заставить его делать то, что он не был предназначен. Используйте одну из реальных систем ОО, таких как S4, ссылочные классы, proto, R6 и т. Д. – joran
Сделайте шаг назад - сообщите нам, что делает ваш более крупный код. Возможно, мы сможем помочь вам сделать то, что вы пытаетесь, таким образом, чтобы в долгосрочной перспективе вы стали намного счастливее. – waternova