0

以前はこれで問題が発生したことはありませんが、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 ループ内に配置されていない場合は正常に動作します。ありがとう。

4

1 に答える 1