У меня есть функция с тремя аргументами, каждый в виде списка.Значения этих аргументов не являются фиксированными.Они являются выходами другой функции, применяемой к различным наборам данных.Я хотел бы передать имя для каждого выхода.Моя оригинальная функция возвращает конкретные результаты каждого набора данных.Затем по результатам я могу узнать, какая модель лучше для меня.Таким образом, простой способ сделать это - напечатать все результаты с названием модели.Я могу сделать это вручную, но это отнимает много времени и иногда заставляет меня ошибиться.Поэтому я попытался написать функцию, облегчающую эту задачу.
Я думаю об использовании функции paste
, но не знаю, как правильно это сделать.
Поскольку моя функция длинная и очень сложная, я предоставляюпростой пример.
myfun <- function(x){
out <- list()
out$x1 <- x^2
out$x2 <- x^3
out$x3 <- x^2+1
return(out)
}
y1 <- 4
y2 <- 5
y3 <- 6
res1 <- myfun(y1)
res2 <- myfun(y2)
res3 <- myfun(y3)
myfun2 <- function(out1=list(), out2=list(), out3=list()){
m <- length(out1)
outfin <- lapply(1:m, function(i) c(out1[[i]], out2[[i]], out3[[i]]))
return(outfin)
}
out1 <- list(res1$x1, res2$x1, res3$x1)
out2 <- list(res1$x2, res2$x2, res3$x2)
out3 <- list(res1$x3, res2$x3, res3$x3)
res.fin <- myfun2(out1, out2, out3)
Тогда я получу это:
> res.fin
[[1]]
[1] 16 64 17
[[2]]
[1] 25 125 26
[[3]]
[1] 36 216 37
Ожидаемый результат:
Я хотел бы получить что-то вродеthis:
[[1]]
[1]"x1:" 16 64 17
[[2]]
[1]"x2:" 25 125 26
[[3]]
[1] "x3:" 36 216 37
Очень важно: в этом примере каждый список содержит только 3 элемента.Однако иногда мне нужно работать с произвольным числом (не фиксированным числом) элементов, скажем, 8
или 10
.Итак, я хотел бы использовать lapply
, чтобы сделать это для меня автоматически внутри моей функции.