gpt4 book ai didi

r - 将 lm 应用于多个数据集

转载 作者:行者123 更新时间:2023-12-04 12:25:23 24 4
gpt4 key购买 nike

下面是 4 个数据集(为了提供可重现的代码,我只是随机创建了它们)。我创建了这些列表,以便我可以一次将“lm”应用于这些多个数据集:

H<-data.frame(replicate(10,sample(0:20,10,rep=TRUE)))   
C<-data.frame(replicate(5,sample(0:100,10,rep=FALSE)))
R<-data.frame(replicate(7,sample(0:30,10,rep=TRUE)))
E<-data.frame(replicate(4,sample(0:40,10,rep=FALSE)))

dsets<-list(H,C,R,E)
models<-lapply(dsets,function(x)lm(X1~.,data=x))
lapply(models,summary)

每个数据集中的变量都是不同的(在数量和名称上都是不同的。但是,如果您运行代码,它们将都是 x1、x2……等等)。每个中的第一列/变量将是响应,其余将是自变量。

此代码有效,但不适用于我的实际数据集。由于我的数据集具有变量的实际名称,因此我使用了变量的位置,如下所示:
   dsets<-list(H,C,R,E)
models<lapply(dsets,function(x)lm(x[,1]~.,data=x))
lapply(models,summary)

使用上述方法,结果一团糟。它还包括响应变量作为自变量。

有人可以帮忙吗?

编辑:我意识到 x[,1] 正在调用整个列而不是列名
   models<lapply(dsets,function(x)lm(colnames(x)[1]~.,data=x))
lapply(models,summary)

但这也不起作用。我收到以下错误
Error in model.frame.default(formula = colnames(H[1]) ~ ., data = H, drop.unused.levels = TRUE) : 
variable lengths differ (found for 'Var1')

最佳答案

models <- lapply(dsets, 
function(data){
lm(reformulate(termlabels=".", response=names(data)[1]), data)
})
reformulate允许您从 character 构造一个公式字符串。

关于r - 将 lm 应用于多个数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28421895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com