По запросу функция foo1
может subset
список by
желаемой переменной (например, by = ESL == 1
). В противном случае foo1
просто выведет сам введенный список.
Для моих целей мне нужно использовать foo1
в новой функции под названием foo2
. НО Мне интересно, почему foo2
не работает и как это исправить:
Error in eval(e, x, parent.frame()) : object 'ESL' not found
Полные воспроизводимые данные и код приведены ниже:
foo1 <- function(by, data){
L <- split(data, data$study.name) ; L[[1]] <- NULL
if(!missing(by)){
s <- substitute(by)
H <- lapply(L, function(x) do.call("subset", list(x, s)))
L <- Filter(nrow, H)
}
return(L)
}
## EXAMPLE OF USE:
D <- read.csv("https://raw.githubusercontent.com/izeh/i/master/k.csv", h = T) ## Data
foo1(data = D, by = ESL == 1) ## works fine :-) @@@@
## BUT:
foo2 <- function(by, data){
foo1(by = by, data = data)
}
## EXAMPLE OF USE:
foo2(data = D, by = ESL == 1) ## Fails :-( @@@@