Reputation: 1462
If that helps, this is related to this question here where I iteratively create RData objects How to save R data object that has been created using assign()?
The following creates some variables and each variable would be assign a random value. After the variable has been assigned a value, I saved them as a unique RData object.
Then, I destroy the variables and try to reload the RData objects back to the environment.
However, for some reasons the RData objects are not loaded to the environment and the load() function call doesn't return any error as well.
set.seed(1990)
for (l in LETTERS) {
print(l)
SKU <- paste0('SKU_',l)
assign(paste0('arima_',SKU), runif(1,1,10))
# check assignment
print(get(paste0('arima_',SKU)))
# save RData
paste0('arima_',SKU) %>% save(file = paste0('arima_',SKU,'.RData'))
}
# remove variables
rm(list=ls())
# reload variables
allRData <- fs::dir_ls(path = '.', regexp = 'arima_')
allRData
# arima_SKU_A.RData arima_SKU_B.RData arima_SKU_C.RData arima_SKU_D.RData arima_SKU_E.RData
# arima_SKU_F.RData arima_SKU_G.RData arima_SKU_H.RData arima_SKU_I.RData arima_SKU_J.RData
# arima_SKU_K.RData arima_SKU_L.RData arima_SKU_M.RData arima_SKU_N.RData arima_SKU_O.RData
# arima_SKU_P.RData arima_SKU_Q.RData arima_SKU_R.RData arima_SKU_S.RData arima_SKU_T.RData
# arima_SKU_U.RData arima_SKU_V.RData arima_SKU_W.RData arima_SKU_X.RData arima_SKU_Y.RData
# arima_SKU_Z.RData
# load
lapply(allRData,load,.GlobalEnv)
> lapply(allRData,load,.GlobalEnv)
$arima_SKU_A.RData
[1] "."
$arima_SKU_B.RData
[1] "."
$arima_SKU_C.RData
[1] "."
$arima_SKU_D.RData
[1] "."
$arima_SKU_E.RData
[1] "."
$arima_SKU_F.RData
[1] "."
$arima_SKU_G.RData
[1] "."
$arima_SKU_H.RData
[1] "."
$arima_SKU_I.RData
[1] "."
$arima_SKU_J.RData
[1] "."
$arima_SKU_K.RData
[1] "."
$arima_SKU_L.RData
[1] "."
$arima_SKU_M.RData
[1] "."
$arima_SKU_N.RData
[1] "."
$arima_SKU_O.RData
[1] "."
$arima_SKU_P.RData
[1] "."
$arima_SKU_Q.RData
[1] "."
$arima_SKU_R.RData
[1] "."
$arima_SKU_S.RData
[1] "."
$arima_SKU_T.RData
[1] "."
$arima_SKU_U.RData
[1] "."
$arima_SKU_V.RData
[1] "."
$arima_SKU_W.RData
[1] "."
$arima_SKU_X.RData
[1] "."
$arima_SKU_Y.RData
[1] "."
$arima_SKU_Z.RData
[1] "."
Upvotes: 2
Views: 1084
Reputation: 206232
The problem is the piping operator is changing the call from
save("arima_SKU_A", file = "arima_A.RData'))
to something more like
. <- "arima_SKU_A"; save(., file = "arima_A.RData'))
because .
is the variable it uses to pass along values. So technically in each of those Rdata
files, you are storing a variable name .
with a value that's equal to the intended name of the dataset. This is mostly a quirk of the non-standard evaluation that save()
does for its unnamed parameters.
Since you want to pass along variable names as strings rather than symbols, it's safer to use save(list=)
parameter and explicitly place the .
yourself.
paste0('arima_',SKU) %>% save(list=., file = paste0('arima_',SKU,'.RData'))
Upvotes: 2