[英]How to combine multiple character columns into a single column in an R data frame
[英]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$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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.