Предположим, я определил

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. Есть предположения?

(Идея пришла здесь, но я думаю, это что-то еще.)

1
Christoph 16 Окт 2019 в 18:32

1 ответ

Лучший ответ

Мы можем указать 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)
1
akrun 16 Окт 2019 в 15:35