首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clusterR返回“参数长度为零”

clusterR返回“参数长度为零”
EN

Stack Overflow用户
提问于 2015-10-08 08:58:20
回答 1查看 663关注 0票数 0

我已经使用R raster软件包很长时间了,但现在我真的无法理解这个clusterR问题。我必须计算netCDF光栅的SPI索引。这是针对每个单元格完成的,获取单元格时间序列并返回该单元格的SPI索引时间序列。

示例输入文件(大约4MB)可以找到这里

见以下代码:

代码语言:javascript
复制
library(raster)
library(SPEI)

calcspi <- function(pr) { #this function calculates the SPI index for each timeseries of values
    pr <- as.numeric(pr)
    if (all(is.na(pr[1:20]))) { #Check that this is not an NA cell
        outspi <- rep(NA, length(pr))
    } else {
        outspi <- fitted(spi(pr, 12, na.rm=TRUE))
    }
    return(outspi)
}

b <- brick("input_crop.nc", varname="pr")
readAll(b) #As requested in the comments

###THIS WORKS BUT IS SLOW:
bc <- calc(b, calcspi)

###THIS DOES NOT:
beginCluster(n=4)

bc <- clusterR(b, calc, args=list(fun="calcspi"))
#[1] "argument is of length zero"
#attr(,"class")
#[1] "snow-try-error" "try-error"
#Error in clusterR(b, calc, args = list(fun = "calcspi")) : cluster error

endCluster()

###THIS DOESN'T EITHER:
beginCluster(n=4)

f <- function(x) calc(x, calcspi)
bc <- clusterR(b, f)
#[1] "argument is of length zero"
#attr(,"class")
#[1] "snow-try-error" "try-error"
#Error in clusterR(b, f) : cluster error

endCluster()

在这种情况下,traceback()是完全无用的。怎么啦?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-26 18:30:27

这对我起了作用:

代码语言:javascript
复制
b <- mybrick
#readAll(b) #As requested in the comments
#parallel processing 
ff <- function(x) calc(x, calcspi)
beginCluster(8)
bc <- clusterR(b, fun = ff,export='calcspi')
endCluster()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33011129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档