Потому что вместо i
(т.е. "mpg") вы используете targets["mpg"]
, что имеет смысл только тогда, когда ваш targets
является вектором с names(targets) == targets
. Итак, используя ваш пример:
library(foreach)
targets = names(mtcars)
targets
# [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear" "carb"
testing <- foreach(i = targets) %do% {
message(sprintf("[+] i = %s", i))
x <- mtcars[i]
message(sprintf("[!] But targets[i] is %s!", targets[i]))
message(sprintf("[*] Using paste0(i, '.rds'), produces: \n%s", paste0(i, ".rds")))
#saveRDS(x, file = paste0(i, ".rds"))
return(1) # hack to make loop not store in memory
}
# [+] i = mpg
# [!] But targets[i] is NA!
# [*] Using paste0(i, '.rds'), produces:
# mpg.rds
# [+] i = cyl
# [!] But targets[i] is NA!
# [*] Using paste0(i, '.rds'), produces:
# cyl.rds
# .....................................