如何从分配列表中访问函数?
How to access functions from a list in assign?
假设我定义了
methods <- list(hurz.default = function (vehicles, mission) {
vehicles_r <- vehicles
return(vehicles_r)},
hurz.a = function (vehicles, mission) {
vehicles_r <- vehicles[1, ]
return(vehicles_r)})
现在,这是有效的
i <- 1
assign(names(methods[i]), methods[[i]])
但这不是:
lapply(c(1:length(methods)), function(i) {
assign(names(methods[i]), methods[[i]])
})
我无法使用 Hadley 找到答案。
有什么想法吗?
(这个想法来自 here 但我猜这是另外一回事。)
我们可以指定env
lapply(seq_along(methods), function(i) {
assign(names(methods)[i], methods[[i]], env = .GlobalEnv)
})
hurz.default
#function (vehicles, mission) {
# vehicles_r <- vehicles
# return(vehicles_r)}
hurz.a
#function (vehicles, mission) {
# vehicles_r <- vehicles[1, ]
# return(vehicles_r)}
有了list
,另一个选项是list2env
list2env(methods, .GlobalEnv)
假设我定义了
methods <- list(hurz.default = function (vehicles, mission) {
vehicles_r <- vehicles
return(vehicles_r)},
hurz.a = function (vehicles, mission) {
vehicles_r <- vehicles[1, ]
return(vehicles_r)})
现在,这是有效的
i <- 1
assign(names(methods[i]), methods[[i]])
但这不是:
lapply(c(1:length(methods)), function(i) {
assign(names(methods[i]), methods[[i]])
})
我无法使用 Hadley 找到答案。 有什么想法吗?
(这个想法来自 here 但我猜这是另外一回事。)
我们可以指定env
lapply(seq_along(methods), function(i) {
assign(names(methods)[i], methods[[i]], env = .GlobalEnv)
})
hurz.default
#function (vehicles, mission) {
# vehicles_r <- vehicles
# return(vehicles_r)}
hurz.a
#function (vehicles, mission) {
# vehicles_r <- vehicles[1, ]
# return(vehicles_r)}
有了list
,另一个选项是list2env
list2env(methods, .GlobalEnv)