簡體   English   中英

如何在r的單個數據幀中組合輸出?

[英]How to combine the outputs in a single data frame in r?

我有R中三個不同引導程序組的三個輸出。

Bootstrap Statistics的結果生成為原始,bias和std。 每個組的錯誤值。

是否可以定義一個函數將所有結果放到一個數據框中?

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

請參閱功能boot文檔(例如: help("boot") )。 您可以在“值”部分中找到函數的所有輸出值的描述名稱。 您可以使用[]$訪問它們(例如: results_y100$t0results_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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM