【发布时间】:2013-12-20 13:03:46
【问题描述】:
我第一次尝试在我的机构使用高性能集群,但遇到了一个我无法解决的问题。
以下代码返回错误:
ptime<-system.time({
r <- foreach(z = 1:length(files),.combine=cbind) %dopar% {
raster <- raster(paste(folder,files[1],sep=""))
data<-getValues(raster)
clp <- na.omit(data)
for(i in 1:length(classes)){
results[i,z]<-length(clp[clp==classes[i]])/length(clp)
print(z)
}
}
})
Error in { : task 1 failed - "could not find function "raster""
A 还为我的另一项任务尝试了不同的 foreach 代码:
r <- foreach (i=1:length(poly)) %dopar% {
clip<-gIntersection(paths,poly[i,])
lgth<-gLength(clip)
vid<-poly@data[i,3]
path.lgth[i,] <- c(vid,lgth)
print(i)
}
这次没有找到 gIntersection 函数。显然,软件包都已安装并加载。在阅读了一些论坛帖子后,它似乎与函数执行/操作的环境有关。
有人可以帮忙吗?我不是程序员!
谢谢!
更新:
我已经针对所提供的解决方案调整了我的代码:
results<-matrix(nrow=length(classes),ncol=length(files))
dimnames(results)[[1]]<-classes
dimnames(results)[[2]]<-files
ptime<-system.time({
foreach(z = 1:length(files),.packages="raster") %dopar% {
raster <- raster(paste(folder,files[z],sep=""))
data<-getValues(raster)
clp <- na.omit(data)
for(i in 1:length(classes)){
results[i,z]<-length(clp[clp==classes[i]])/length(clp)
print(z)
}
}
})
但我得到的是一个充满 na 的输出(我的结果矩阵)。如您所见,我创建了一个名为 results 的矩阵对象来填充结果(适用于 for 循环),但在阅读 foreach 文档后,您似乎使用此函数以不同方式保存结果。
关于我应该为 .combine 参数选择什么的建议?
【问题讨论】:
-
尝试使用
foreach的.packages参数。包没有加载到工人身上。 -
cran.r-project.org/web/packages/foreach/vignettes/foreach.pdf 第 8 页和第 9 页。或
?foreach。这就是罗兰评论中给出的信息。 -
非常感谢您的帮助!这个问题解决了,但现在我有一个新问题。我将编辑我原来的问题。
-
请不要更改您的问题以提出新问题。这将使未来的访客感到困惑。如果您有新问题,请提出新问题。这显然是一个新问题。另请参阅 stackoverflow.com/tour 和 stackoverflow.com/help/asking 了解该网站的工作原理
-
我只是想建立在以前的响应者已经拥有的关于我的代码的知识库的基础上。
标签: r