小编Kar*_*ren的帖子

在R doParallel'foreach'中找不到的函数 - {:task 1 failed - "找不到函数"raster""出错

我试图在我的机构第一次使用高性能集群,我遇到了一个我无法解决的问题.

以下代码返回错误:

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""
Run Code Online (Sandbox Code Playgroud)

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)
}
Run Code Online (Sandbox Code Playgroud)

这次没有找到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)
    } …
Run Code Online (Sandbox Code Playgroud)

r

36
推荐指数
1
解决办法
3万
查看次数

将foreach循环的结果保存在矩阵中

我正在尝试调整for循环以并行使用它作为foreach循环.对于for循环,我创建一个空矩阵,然后用for循环生成的值填充它.但是这种方法在foreach循环中不起作用,

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)
      }
    }
})
Run Code Online (Sandbox Code Playgroud)

我的结果矩阵仍然只是填充了na,它没有填充.

z是一个栅格文件,我是一个数字类的向量.我希望每个类别i的光栅z中的单元格数量,然后将其除以光栅z中的单元格总数以得到这个比例.

关于如何在foreach循环中将其保存为矩阵/数据帧的任何建议?

先感谢您.


跟进上一个问题

foreach r

6
推荐指数
1
解决办法
2628
查看次数

标签 统计

r ×2

foreach ×1