Как объединить выходы в один фрейм данных в r?
У меня есть три выхода из трех разных групп начальной загрузки в R.
Результаты Bootstrap Statistics генерируются как оригинальные, смещенные и стандартные. Значения ошибок для каждой группы.
Можно ли определить функцию для объединения всех результатов в один фрейм данных?
y <- rgamma(30,1,1) + rnorm(30,0,0.01)
y60 <- rgamma(60,1,1) + rnorm(60,0,0.01)
y100 <- rgamma(100,1,1) + rnorm(100,0,0.01)
minusL <- function(params, data) {
-sum(log(dgamma(data, params[1], params[2])))
}
fit <- nlm(minusL, c(1,1), data=y)
fit
gammamedian<-function(data) {
fit <- nlm(minusL, c(1,1), data=data)
qgamma(.5, fit$estimate[1], fit$estimate[2])
}
gengamma <- function(data, params){
rgamma(length(data), params[1], params[2])}
library(boot)
results_y <- boot(y, gammamedian, R=100, sim="parametric", ran.gen=gengamma,
mle=fit$estimate)
results_y
results_y60 <- boot(y60, gammamedian, R=100, sim="parametric",
ran.gen=gengamma, mle=fit$estimate)
results_y60
results_y100 <- boot(y100, gammamedian, R=100, sim="parametric",
ran.gen=gengamma, mle=fit$estimate)
results_y100
1 ответ
Смотрите документацию по функции boot
(например: help("boot")
). Вы можете найти имена и описания всех выходных значений функции в разделе "Значение". Вы можете получить к ним доступ, используя []
или же$
(например: results_y100$t0
или же results_y100["t0"]
). Вы можете выбрать те, которые вас интересуют, и объединить их во фрейм данных, например, так:
Поместите все интересующие результаты в список:
my_list <- list(results_y = boot(y, gammamedian, R=100, sim="parametric", ran.gen=gengamma, mle=fit$estimate),
results_y60 = boot(y60, gammamedian, R=100, sim="parametric",ran.gen=gengamma, mle=fit$estimate),
results_y100 = boot(y100, gammamedian, R=100, sim="parametric", ran.gen=gengamma, mle=fit$estimate))
Определите функцию, которая извлекает интересующее вас значение из всех элементов списка:
get_val <- function(val) unlist(sapply(my_list, function(X) X[val]))
Создайте фрейм данных с помощью этой функции:
my_df <- data.frame(t0 = get_val("t0"),
R = get_val("R"))
rownames(my_df) <- names(my_list)
my_df