Ваша foo2
функция пытается вычислить выражение
foo1(data = D, by = G[[i]])
, но не имеет i
доступного. Вам нужно оценить G[[i]]
в анонимной функции, которую вы передаете lapply
, чтобы получить выражение, определяющее подмножество, а затем оценить это подмножество в foo2
. Я рекомендую называть эту функцию вместо использования анонимной;это значительно облегчает отладку.
Вот некоторые перекодировки, которые работают:
Переопределение foo2
до
foo2 <- function(data, by){
by <- eval(by, envir = data)
foo1(data = data, by = by)
}
и
foo3 <- function(i) {
expr <- G[[i]]
foo2(data = D, by = expr)
}
а затем
lapply(1:3, foo3)
Я не уверен, что это именно то, что вы хотите, но оно должно быть достаточно близко, чтобы вы могли это исправить.