Я хочу вычислить квантили каждой строки кадра данных и вернуть результат в виде матрицы. Так как я хочу, чтобы вычислить и произвольное число квантилей (и я думаю, что это быстрее, чтобы вычислить их все сразу, а не повторного запуска функции), я попытался с помощью формулы я нашел в this question:Почему sum() работает в этом выражении dplyr, а quantile() - нет?
library(dplyr)
df<- as.data.frame(matrix(rbinom(1000,10,0.5),nrow = 2))
interim_res <- df %>%
rowwise() %>%
do(out = sapply(min(df):max(df), function(i) sum(i==.)))
interim_res <- interim_res[[1]] %>% do.call(rbind,.) %>% as.data.frame(.)
Это имеет смысл, но когда я пытаюсь применить ту же структуру функции quantile()
как закодировано,
interim_res <- df %>%
rowwise() %>%
do(out = quantile(.,probs = c(0.1,0.5,0.9)))
interim_res <- interim_res[[1]] %>% do.call(rbind,.) %>% as.data.frame(.)
Я получаю сообщение об ошибке:
Ошибка в роде .int (х, na.last = na.last, уменьшаясь = уменьшается, ...):
'х' должен быть атомарным
Почему я получаю сообщение об ошибке с quantile
и не sum
? Как мне исправить эту проблему?
В вашем примере квантиля вычисляются по переменным в data.frame, а не по наблюдениям. Это довольно необычно. Вы уверены, что это то, что вы хотели? – akhmed
Столбцы представляют собой результаты моделирования, а строки - это разные конфигурации параметров. –