Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在中构建数据帧并从for循环输出_R_Loops_For Loop - Fatal编程技术网

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

在中构建数据帧并从for循环输出,r,loops,for-loop,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,

基本上,我正在尝试创建一个函数来生成黄土模型,然后在指定范围内预测模型的值,并将其输出到数据帧。我有不同的功能,使用相同的通用结构输出我构建的数据帧,但这个似乎不起作用,我不知道为什么。我认为这是一个令人尴尬的简单

伪造数据

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)) 
生成一个函数,在数据帧中循环,执行预处理,并将预处理结果输出到一个可供以后使用的对象。“s”是用户需要能够修改的变量

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

这不会为我返回错误。但是,
nofun
缺少返回值。在最后一个
}
之前添加
pred_a
。对,但这只是输出到控制台。如果我运行nofun(mod),我将看到输出。如果我输入pred_a。未捕获该输出(“错误:未找到对象“pred_a”)。我可以通过键入pred_aal来解决这个问题,虽然后者是可能的,但这与语言的概念是背道而驰的。函数应该只有一个返回值,然后可以将其分配给变量,并且没有副作用(如创建R对象)。因此,请使用
pred_a
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)
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