РЕДАКТИРОВАТЬ: у меня есть несколько функций с несколькими аргументами, которые я хотел бы применить к списку списков. Одним из аргументов также является список списков. Обе функции имеют несколько параметров. два из которых я должен указать рекурсивно через списки списков. скажем, у меня есть два следующих списка списков:
mylist <- list(list(10,12,13,14,15), list(5,6,7,8,9))
m <- list(list(2,2,2,3,4), list(3,3,4,4,5))
и функции
func1 <- function(x, att1 = m, const = 10){
e <- x^m + const
return(e)
}
func2 <- function(x, att2 = m, const = 10){
d <- sqrt(x)/m + const
return(d)
}
Я не знаю, как обратиться к правильному аргументу, att1
или att2
, когда я хочу вызвать каждую функцию. Я попробовал приведенную ниже функцию, используя eval(substitute(att1 = a))
nested_function <- function(df_list, FUN = func1, changing_param = a, ...){
nested_output <- lapply(seq(df_list), function(i){
lapply(seq(df_list[[i]]), function(j){
FUN(df[[i]][[j]], eval(substitute(changing_param))[[i]][[j]],...)
})
})
return(nested_output)
}
result <- nested_function(df_list, FUN = func1, changing_param = 'att1 = a')
и получил следующую ошибку:
Error in df[[i]] : object of type 'closure' is not subsettable
6.
FUN(df[[i]][[j]], eval(substitute(changing_param))[[i]][[j]],
...)
5.
FUN(X[[i]], ...)
4.
lapply(seq(df_list[[i]]), function(j) {
FUN(df[[i]][[j]], eval(substitute(changing_param))[[i]][[j]],
...)
})
3.
FUN(X[[i]], ...)
2.
lapply(seq(df_list), function(i) {
lapply(seq(df_list[[i]]), function(j) {
FUN(df[[i]][[j]], eval(substitute(changing_param))[[i]][[j]],
...) ...
1.
nested_function(mylist, changing_param = m)
Моя проблема заключается в том, как сделать так, чтобы вызов FUN()
распознал a
как att1
в func1
и att2
в func2
, поскольку я должен назначить их для каждой функции (я не могу просто указать аргумент).
есть предложения?