r-应用嵌套lapply函数



我创建了以下函数,目的是应用lapply的两次迭代。

这里的"x"是10个数据帧的列表,每个数据帧的第一列都作为响应变量。

首先,我应用lapply在这些数据帧上运行一个"lm",方法是传递包含它们的列表,并将第一列指定为响应,然后在相应数据帧中的所有变量上运行lm。

然后,我希望在每个数据帧中创建一列,一旦应用了"lm",该列将包含拟合的值。

  runit<-function(x){
     {lapply(x,function(data){lm(reformulate(termlabels=".",
      response=names(data)[1]),data)})
     }
     {
     lapply(x,function(data){data$fitted<-fitted(data)})
     }
     }

然而,这不起作用。运行后,我得到"null"作为输出

runit(listcontainingdataframes)
[[1]]
NULL
[[2]]
NULL
[[3]]
NULL
[[4]]
NULL
#No need for two `lapply`
x<-list(mtcars,iris)
lapply(x,function(data){
                  data$result<-lm(reformulate(termlabels=".",response=names(data)[1]),data)$fitted
   return(data)
         }
)

这很有效:

hellow<-lapply(x,function(data){
    data$result<-fitted(lm(reformulate
 (termlabels=".",response=names(data)[1]),data,na.action="na.exclude"))
 return(data)   
}
)

但是,现在当我使用时

list2env(hellow,.GlobalEnv)

为了将列表"hellow"转换为单独的数据帧,我得到了

    Error in list2env(hellow, .GlobalEnv) : 
  names(x) must be a character vector of the same length as x

我知道他的名单上没有名字,所以出现了错误。但是,如果不为列表中的每个元素指定名称,我怎么能通过它呢。

感谢Metrics和Richard

最新更新