我想给一个函数一个params参数,然后附加它,这样我就可以在每次引用列表元素a时使用a而不是params$a。
run.simulation<-function(model,params){
attach(params)
#
# Use elements of params as parameters in a simulation
detach(params)
}
这有什么问题吗?如果我已经定义了一个名为c的全局变量,并且还定义了列表"params“中的一个名为c的元素,那么它的值会在attach命令之后使用吗?
发布于 2011-04-27 15:29:08
Noah已经指出,使用attach是一个坏主意,即使你在一些例子和书籍中看到了它。有一条路可以绕过去。您可以使用名为with
的“本地附加”。在Noah的虚拟示例中,如下所示
with(params, print(a))
这将产生相同的结果,但更整洁。
发布于 2012-07-16 21:41:28
另一种可能性是:
run.simulation <- function(model, params){
# Assume params is a list of parameters from
# "params <- list(name1=value1, name2=value2, etc.)"
for (v in 1:length(params)) assign(names(params)[v], params[[v]])
# Use elements of params as parameters in a simulation
}
发布于 2019-02-07 01:40:37
Jean-Luc的回答极大地帮助了我,因为我使用的是data.frame Dat
,而不是操作中指定的列表:
for (v in 1:ncol(Dat)) assign(names(Dat)[v], Dat[,v])
https://stackoverflow.com/questions/5797797
复制相似问题