Допустим, у меня есть матрица списков:R: применить функцию к каждому элементу матрицы списков и возвращать результат в том же формате матрицы
theList <- matrix(list(rnorm(10), rnorm(10), rnorm(10), rnorm(10)), nrow=2, ncol=2)
theList
[,1] [,2]
[1,] Numeric,10 Numeric,10
[2,] Numeric,10 Numeric,10
И я хочу, чтобы применить некоторую функцию к каждому элементу эта матрица сохраняет прежние размеры.
Я обнаружил, что следующие работы с sapply:
apply(theList, 2, sapply, mean)
[,1] [,2]
[1,] 0.5678905 0.0577225
[2,] -0.2708252 0.5045110
Однако он не работает с lapply:
apply(theList, 2, lapply, mean)
[[1]]
[[1]][[1]]
[1] 0.5678905
[[1]][[2]]
[1] -0.2708252
[[2]]
[[2]][[1]]
[1] 0.0577225
[[2]][[2]]
[1] 0.504511
Как применить функцию к каждому списку в матрице списков и возврата данные в том же формате - матрица списков с одинаковыми размерами?
Матрица списков - это ужасная структура данных. Кроме того, почему вы заботитесь о 'lapply()', если 'sapply()' работал нормально? –
Для меня это была бы хорошая структура, если бы это сработало. Я не хочу 'sapply', потому что он ограничен функциями, возвращающими одно значение в качестве вывода. 'lapply' является более общим и последовательным. –
Я предполагаю, что 'simplify2array (apply (theList, 2, lapply, mean))' будет работать. Или даже '\' dim <- \ '(lapply (theList, mean), dim (theList))' –