降雪包:尝试将属性设置为NULL

时间:2019-05-09 13:36:19

标签: r attributes package snowfall

我正在尝试使用降雪包对我的数据(NDVI最大栅格堆栈)运行MBLM。我想要一个包含三列的数据框作为我的输出(斜率,截距,每个像素可用的日期数),其中有很多丢失的数据(NA),因此我创建了一个函数,如果没有数据,该函数将为第三列返回0。

这是我正在使用的函数,其中val100是我原始Val的特定列数,栅格堆栈被强制转换为一个数据帧,其中包含30年跨度的每个像素最大NDVI

val = as.data.frame(NDVI.max.masked.184028)
val100 = val[c(1080700:1080737),] # Random selection of data to try and determine where the function isn't working

TREND = function (x) {
  dat = val100[x,]
  print(x)
  names(dat) = paste(substr(names(dat), 19,22))
  add_column(dat, "2012" = NA, .before = "2013")


  if(sum(as.numeric(!is.na(dat[])))==0) {return (c(NA, NA, 0))} else  if (
    sum(as.numeric(!is.na(dat[])))>0 & sum(as.numeric(is.na(dat[])))>0) {
    sumNA = sum(as.numeric(!is.na(dat[])))
    ##FONCTION QUI GARDE COMBIEN DE RASTERS NA
    dat <- dat[-which(is.na(dat[]))]
    dat=data.frame(Year = names(dat), NARI = as.vector(as.numeric(dat)))
    dat$Year = as.numeric(as.character(dat$Year))
    mod <- mblm(NARI ~Year, data=dat)
    return(c(as.numeric(c(mod$coefficients[1], mod$coefficients[2])),sumNA)) } else if (
      sum(as.numeric(!is.na(dat[])))>0 & sum(as.numeric(is.na(dat[])))==0) {
      names(dat) = paste(substr(names(dat), 19,22))
      dat = data.frame(Year= names(dat), NARI = as.vector(as.numeric(dat)))
      dat$Year = as.numeric(as.character(dat$Year))
      mod <- mblm(NARI ~Year, data=dat)
      return(c(as.numeric(c(mod$coefficients[1], mod$coefficients[2])), sumNA)) }
}
## Snowfall package 

Start = Sys.time()
sfInit(cpus=6,type='SOCK',parallel=TRUE)
sfExport("val100",  "TREND")
sfLibrary(mblm)
sfLibrary(tibble)

RES_ARI = sfLapply(1:nrow(val),TREND)
sfStop()
End = Sys.time()
Timetotal = End - Start

我希望该函数返回具有三列的数据帧作为输出。 当我手动使用该函数时,该函数起作用,但是当我使用降雪包(必要时,因为要排序1400000像素),它将返回错误:

  

“ checkForRemoteErrors(val)中的错误:一个节点产生了一个错误:尝试将属性设置为NULL”

0 个答案:

没有答案