我尝试使用eval,parse或其他任何工作来构建动态函数
函数的意图:值设置器。
参数输入:列表,列表项名称,值
回归:真的不在乎
当前代码
#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
}
我发现的问题是我需要传递一个局部变量的值&#34; ls&#34;动态来自哪里(state_list) 我知道&lt; - function(a,name,value){... return(a)}工作,但这种语法真的不是我的偏好。 因为我试图学习如果没有功能的分配方面可以做同样的事情。 任何建议都会有所帮助。
答案 0 :(得分:1)
即使这是一个可怕的想法,例如
fun_lsSetValue <- function(ls,name,value){
lsname <- deparse(substitute(ls))
name <- deparse(substitute(name))
ls <- get(lsname, envir=globalenv())
if(is.null(value)) {
value<-''
}
ls[[name]]<-value
assign(lsname, ls,envir=globalenv())
}
应该有效
a <- list(x=1)
fun_lsSetValue(a,x,3)
a
# $x
# [1] 3