#r #apply
Вопрос:
У меня есть список значений в качестве вывода:
[,1] [,2] [,3] ATE_true numeric,1000 numeric,1000 numeric,1000 ate_now numeric,1000 numeric,1000 numeric,1000 ate_truew numeric,1000 numeric,1000 numeric,1000 ate_estw numeric,1000 numeric,1000 numeric,1000 ci_w numeric,1000 numeric,1000 numeric,1000
Я хочу получить среднее значение для каждой 1000 значений, т. Е. среднее значение(ATE_true[,1], ATE_true[,2]… и так далее. Следовательно, используется функция apply
apply(output,1:2,mean)
Но я получаю взамен значения NA с ошибкой: В смысле.по умолчанию(newX[, i], …) : аргумент не является числовым или логическим: возвращает NA
Я понимаю , что вывод в формате списка рассматривается как нечисловой, но как мне это решить?
Мой желаемый результат:
[,1] [,2] [,3] ATE_true 0.98 0.94 0.97 ate_now 0.86 0.85 0.88 ate_truew 0.83 0.87 0.85 ate_estw 0.86 0.89 0.90 ci_w 0.92 0.91 0.95
Ответ №1:
Это a matrix
с элементами as list
. Нам нужно lapply/sapply
sapply(output, mean)
-выход
[1] -0.046958713 -0.007220200 0.029603442 0.003012857 -0.049690575 -0.027583183 0.013375545 0.008587789 0.010594652 0.019766799 [11] -0.016020775 0.015412491
Если нам нужны данные для matrix
ввода , используйте dim
out lt;- sapply(output, mean) dim(out) lt;- dim(output)
-выход
gt; out [,1] [,2] [,3] [1,] -0.046958713 -0.049690575 0.01059465 [2,] -0.007220200 -0.027583183 0.01976680 [3,] 0.029603442 0.013375545 -0.01602077 [4,] 0.003012857 0.008587789 0.01541249
Если нам dimnames
тоже понадобится
dimnames(out) lt;- dimnames(output)
данные
set.seed(24) output lt;- matrix(replicate(12, rnorm(1000), simplify = FALSE), 4, 3)
Комментарии:
1. Да, но тогда у меня возникнут проблемы с визуализацией результатов. Как и изначально, у меня есть список примерно из 40 ( 8 * 5 ) . Я обновил, как я хочу, чтобы выглядел мой вывод.
2. @TriparnaPoddar попробуйте обновить