我一直在做很多研究,我想我在R中嵌套for循环时错过了一些东西。我有两个数据框 - 一个包含观察值和位置,我想写输出和另一个具有我正在循环的变量名称。现在循环工作,但它需要14个小时才能遍历200行,这似乎有点过分。当然,我在每一行预成型了12个单独的排列(100次),但我理想地想要做> 1000+排列。有没有一种更有效的方式来执行此循环?当我运行一个单独的观察时,需要花费很少的时间来完成(小于2秒),这让我乞求应该有更好的方法来完成这项任务。任何帮助你可以在优化这个代码将不胜感激!谢谢!在R中优化循环
主数据集连接(fbfm.xlsx),其被称为fm.std https://www.dropbox.com/s/vmd8d05yxds93j6/fbfm.xlsx?dl=0
library(rothermel)
u.val<-c(5,10,15,25,35,45,55,65,75,85,95,100)
unames <- data.frame(u=u.val,ros.nam=paste("u",u.val,"_ROS",sep=""), stringsAsFactors = FALSE)
ros.out<-data.frame(fm.std)
for (i in 1:dim(unames)[1]){
ros.out[,unames[i,'ros.nam']]<-999
}
ros.out <- as.vector(ros.out)
fm.std <- as.vector(fm.std)
for (i in 1:dim(ros.out)[1]){
ros.out[i,1:32]
for (u in 1:dim(unames)[1]){
ros.out[i,unames[u,'ros.nam']]<-mean(rosunc(modeltype=fm.std[i,'Fuel_Model_Type'], #Dyanmic or static model
w=fm.std[i,4:8], # fuel loads (1, 10, 100, herb, and shrub)
s=fm.std[i,9:13], # SAV measurements
delta=fm.std[i,14], #fuel bed depth
mx.dead=fm.std[i,15], # dead fuel mositure of extinction
h=fm.std[i,16:20], # heat content for fuel classes
m=fm.std[i,c(25,24,23,26,30)], #percent moisture of fuel classes
u = unames[u,'u'],
slope=0,
sdm=0.3,
nsim=100)) #wind and slope of 0 }}
如果你有工作,你想提高那么代码你应该张贴在代码审查的问题,而不是StackOverflow上http://codereview.stackexchange.com/ –
喜哈克-R,感谢我将发布在那边 –