Как объединить выходы в один фрейм данных в 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
Другие вопросы по тегам