将列表从lapply转换为数据框

时间:2018-06-11 03:04:03

标签: r

我无法将我的列表从lapply转换为数据框。我的最终输出xx接近我正在寻找的,但不完全正确。现在它对10个变量进行了2次观察。每个观察结果都是280的列表,但我希望我的最终数据框能够对10个变量进行560次观察,因此只需将列表展开并相互堆叠。我感谢任何帮助。

cid_station=data.frame(cid=1:280,station=sample(1:10,size=280,replace=T))

cid=unique(cid_station$cid)

july = rbind(cid_station[rep(1:280,450),])
july$resid=rnorm(n=nrow(july))

w1=data.frame(station=sample(1:10,size=2400,replace=T),
                   kwhhat=rnorm(n=2400,mean=50,sd=10), year=1)
w2=data.frame(station=sample(1:10,size=2400,replace=T),
              kwhhat=rnorm(n=2400,mean=500,sd=10), year=2)
weather= rbind(w1,w2)

iteration=(1:10)
year=(1:2)


x=lapply(iteration,function(z){

  i=lapply(year,function(yr){
    subset_y=weather[weather$year==yr,]

      peaks=lapply(cid,function(id){
            subset_r=july[july$cid==id,"resid"]
            subset_s=unique(july[july$cid==id,"station"])
            subset_w=subset_y[subset_y$station==subset_s,]
            subset_w$resid=sample(subset_r,size=nrow(subset_w),replace=T)
            subset_w$kw=subset_w$kwhhat+subset_w$resid
            peak=max(subset_w$kw)
          })
      })
  })

xx=as.data.frame(do.call(cbind, x))

1 个答案:

答案 0 :(得分:0)

我觉得您的代码中必须进行一些优化,但我对您尝试做的事情不够清楚。也就是说 - map_dfc包中的purrr函数可以为您提供所需的功能。

xx <- map_dfc(x, unlist)