在for循环中构建数据帧并从中输出

时间:2013-08-17 18:31:28

标签: r loops for-loop

基本上,我正在尝试创建一个生成黄土模型的函数,然后在指定范围内预测模型的值,并将其输出到数据框。我有不同的功能使用相同的通用结构输出我构建的数据框架,但这个似乎没有工作,我无法弄清楚为什么。我认为它简直令人尴尬。

制作一些假数据

mod<-data.frame(k1=c(200:600), a=rnorm(401, 20,5), b=rnorm(401, 20,5), c=rnorm(401, 20,5),
                k2=c(200:600), d=rnorm(401, 20,5), e=rnorm(401, 20,5), f=rnorm(401, 20,5)) 

删除所有剩余变量

rm(pred_a, a.pred, a.loess)

生成一个循环数据帧的函数,执行黄土,并将谓词输出到稍后可以使用的对象。 “s”是用户需要能够修改的变量。

nofun<-function(mod, s=rep(0.5,(dim(mod)[[2]]-2))){
  d<-dim(mod)[[2]]

提取数据框的相关部分

 mod_a<-mod[,1:(d/2)]

为谓词创建变量

  k<-c(200:600)

创建一个空数据框

 pred_a<-data.frame(k)

将预测输出分配给数据框或矩阵。如果我在print()语句中包含第5行(即它将正确的数据输出到控制台),这似乎有效,但它不会在工作区中创建变量。

for(i in 1:(d/2-1)){
    a.loess<-loess(mod_a[,i+1] ~ mod_a[,1], span=s[i], data=mod_a)
    a.pred <-predict(a.loess,k)
    a.pred[a.pred<0]<-0
    pred_a<-cbind(pred_a, a.pred)
  }
 }
nofun(mod)

返回“错误:未找到对象'pred_a'”

pred_a

0 个答案:

没有答案