这是数据分析师一直在做的事情(特别是在处理缺少响应的调查数据时)。通常首先对一组完整的数据矩阵进行乘法插补,将模型拟合到每个矩阵,然后组合结果。目前我正在手工做事并寻找更优雅的解决方案。
想象一下有 5 个*.csv
工作目录中的文件,名为dat1.csv
, dat2.csv
, ... dat5.csv
。我想使用每个数据集估计相同的线性模型。
Given 这个答案,第一步是收集文件列表,我使用以下命令执行此操作
csvdat <- list.files(pattern="dat.*csv")
现在我想做一些类似的事情
for(x in csvdat) {
lm.which(csvdat == "x") <- lm(y ~ x1 + x2, data = x)
}
“which”语句是我尝试使用循环当前所在的 csvdat 列表中的位置依次对每个模型进行编号的愚蠢方法。也就是说,我希望这个循环返回一组 5 个 lm 对象,其名称为lm.1
, lm.2
, etc
是否有一些简单的方法来创建这些对象并命名它们,以便我可以轻松地指示它们对应于哪个数据集?
感谢您的帮助!
另一种方法是使用plyr
包来进行循环。使用 @chl 构建的示例,您将如何做到这一点
require(plyr)
# read csv files into list of data frames
data_frames = llply(csvdat, read.csv)
# run regression models on each data frame
regressions = llply(data_frames, lm, formula = y ~ .)
names(regressions) = csvdat
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)