我有一个带有变量和两个因子的数据框
test <- data.frame(variable = rnorm(100,10,5),
factor_1 = as.factor( rep(1:2,50)),
factor_2 = as.factor( rep(1:5,20)))
test <- test[test$variable>0,]
我将Weibull分布拟合到 full factorial子集,并收集如下拟合参数:
DF <- split(test, list(test$factor_1, test$factor_2), drop = TRUE)
library(fitdistrplus)
fit.weibull <- function(DF) {
scale <- summary(fitdist(DF[,1],'weibull'))[[1]][2]
scale_sd <- summary(fitdist(DF[,1],'weibull'))[[3]][2]
rbind(scale, scale_sd)
}
params <- lapply(DF, fit.weibull)
我基本上想要作为最终输出的是一个数据帧,该数据帧包含scale
,scale_sd
和factor_2
作为列。但是我当前的输出很难转换成这样的数据帧。
非常感谢您的帮助。
答案 0 :(得分:0)
好的,我找到了一个可行的丑陋解决方案:
scale <- c()
scale_sd <- c()
name <- c()
for (i in 1:length(params)) {
scale[[i]] <- params[[i]][[1]]
scale_sd[[i]] <- params[[i]][[2]]
name[[i]] <- names(params)[i]
}
DF <- data.frame("name"= as.character(name),
"scale"= as.numeric(scale),
"scale_sd"= as.numeric(scale_sd))
name
列实际上包括两个因子,因此数据帧的每一行代表一个完整的因子子集。