我对R很新,有几个关于我试图执行的循环的问题。我会尽可能地尽我所能解释我希望循环做什么。在R中执行for循环
for(i in (1988:1999,2000:2006)){
yearerrors=NULL
binding=do.call("rbind.fill",x[grep(names(x), pattern ="1988.* 4._ data=")])
cmeans=lapply(binding[,2:ncol(binding)],mean)
datcmeans=as.data.frame(cmeans)
finvec=datcmeans[1,]
kk=0
result=RMSE2(yields[(kk+1):(kk+ncol(binding))],finvec)
kk=kk+ncol(binding)
yearerrors=c(result)
}
yearerrors
首先我要为循环超过数据的文件名进行迭代。 特别是在1988年至2006年的1988年是 的地方被放置在有约束力的声明。 x是输入到R中的数据文件 的列表,1988是文件名的一部分。所以,我有从1988,1989,...,2006开始的 文件名。
yield是一个数值向量,我想将向量的索引 输入到循环中所示的函数RMSE2中。对于 示例,在第一次迭代中,我希望使用绑定中的索引1至 的列数。然后对于下一个迭代 我希望第一个索引比先前的迭代 结束的数量多1,并且继续等于下一个绑定 语句中的列数。我只是不知道我写的是否会完成 这个。
最后,我希望将这些结果中的每一个存储在矢量 yearerrors中,然后再访问这个矢量。
非常感谢!
您可以通过将数据放在自己的文件夹中并在其中设置工作目录,然后使用for(在list.files()中进行循环)来保存大量工作......只是对第1部分 – Seth 2013-02-26 22:29:57
嗨,你可能想看看'?as.character'和'paste0'。另外,如果要合并两个单独的范围,请确保在'c(1800:1850,2003:212)' – 2013-02-26 22:32:59
'(1988:1999,2000:2006)'中使用'c()'无效,它需要'c(1988:1999,2000:2006)' – Chase 2013-02-26 22:33:34