如何从分配列表中访问函数?

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)