我不会假装这个代码甚至是最优的,但这就是我遇到的问题。我有一个用sapply()
读入多列的文件列表,这样如果我调用file.list[[1]]
,我会得到该data.frame的摘要,而summary(file.list)
是一个文件列表。
我使用mgcv
包将曲线拟合到数据中,如下所示:
gam_data <- function(curves)
{
out <- gam(curves[, 15] ~ s(curves[, 23]))
pd <- plot(out)
return(pd)
}
out <- lapply(file.list, gam_data)
split_curves <- function(splitting)
{
pd_2 <- c(splitting[[1]]$fit)
pd_3 <- c(splitting[[1]]$x)
pd_4 <- c(splitting[[1]]$se)
curveg <- cbind(pd_2, pd_3, pd_4)
colnames(curveg) <- c("fitted", "sphro", "se")
return(curveg)
}
out2 <- lapply(out, split_curves)
第一个块正在执行gam,第二个块正在提取曲线的拟合。然而,在所有这些之后,file.list中的原始信息(例如复制,基因型等)丢失,并且data.frames不再是相同的长度。这可能是一个微不足道的问题,但是如何通过处理保留这些信息呢?我将此应用于数百个数据框,因此我不能手动重新创建列。