NULL值在foreach循环R中作为符号地址错误传递

NULL value passed as symbol address error in foreach loop R

我以前从来没有遇到过这个问题,但是当我尝试在 R 中使用 foreach 循环时,我 运行 遇到了这个错误:“{ 中的错误:任务 1 失败 - “NULL 值作为符号传递地址".

我几乎不可能生成一个小型的、可重现的示例(我试过了!),因为我正试图从巨大的栅格中提取数据并从该数据制作 csv 文件。但是,这是我的代码。

bi_2021 <- rast('G:\GridMet_Yearly\bi_2021.nc')

cl <- makeCluster(2)
registerDoParallel(cl)

r = 1
foreach (r=1:10, .packages = c('tidyverse','lubridate')) %dopar% {
  rc <- row_char[r]
  cc <- col_char[r]
  ce <- cell_char[r]
  rn <- row_num[r]
  cn <- col_num[r]
  fname <- paste0('G:/GridMet_Cells_RawData/row',rc,'_col',cc,'_cell',ce,'.csv')

  data_df <- data.frame(read_csv(fname, show_col_types = FALSE)) # read previous data in
  data_df <- data[which(year(data$Date) < 2021),]

  # add rows for 2021 daily data
  data_df[15342:15673,] <- NA
  data_df$Date[15342:15673] <- seq(as.Date('2021-01-01'),as.Date('2021-11-28'),'days')
  data_df$bi[15342:15673] <- as.numeric(bi_2021[rn,cn,][1:332])  # THIS IS THE LINE IT DOESN'T                                                                                       
                                                                         LIKE!

  write_csv(final_df,paste0('G://GridMet_Cells_RawData2//row',rc,'_col',cc,'_cell',ce,'.csv'))
  rm(data_df,cc,ce,cn,fname,rc,rn)}

这是数据示例。

  Date          bi   erc etr_alfalfa fm100 fm1000 etr_grass    pp rhmax rhmin  shum  srad    ud  tmin  tmax   vpd    us
  <date>     <dbl> <dbl>       <dbl> <dbl>  <dbl>     <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
 1 1979-01-01    22    16         0.1  18.2   24.5       0.1   0    74.4  38.7  0.14  78.1   232 -40.8 -26.8    20   2.5

出于某种原因,它不允许我从栅格中提取数据,并将其放入每个变量的特定行中。关于为什么要这样做以及如何解决的任何想法?当它没有放在 foreach 循环中时它工作正常。谢谢

您不能直接在并行化中使用 SpatRaster。请参阅 this github issue. Some methods have built in support (predict, app, lapp and tapp) and there are different ways to approach this in other cases (perhaps see this 问题)。

例如,如果您使用此行,它可能会起作用

bi_2021 <- rast('G:\GridMet_Yearly\bi_2021.nc')

foreach 循环中。