这是我第一次创建 R 包。我试图将 39 个不同的数据集包含到我的包的预加载数据中。但是,创建 .rda 文件的 usethis::use_data() 函数仅采用不带引号的名称,而不是变量。因此数据=dynamic_name_from_for_loop
它不断创建文件data.rda而不是dynamic_name_from_for_loop.rda
library(usethis)
library(readtext)
library(tidyverse)
site_list = c('0034L','0081L','0089L','0166L','0220R','0236L','0307R',
'0333L','0414R','0434L','0445L','0450L','0476R','0501R','0515L',
'0566R','0629R','0651R','0688R','0701R','0817L','0846R','0876L',
'0917R','0938L','1044R','1194R','1227R','1233L','1377L','1396R',
'1459L','1726L','1833R','1946L','2023R','2133L','2201R','2255R')
for (i in 1:length(site_list)){
sitename = site_list[i]
filename = paste0('M:/Tools/GCsandbar/data-raw/',sitename,"sd.csv")
data = read.csv(filename, header = T)
df_name = paste0('RC',sitename,'sd')
assign(df_name,data)
usethis::use_data(data,name = df_name, overwrite = TRUE)
#file.rename(from = 'data/data.rda',to = paste('data/',df_name,'.rda')) ## this did not work
}
Run Code Online (Sandbox Code Playgroud)
这只会创建 39 个 df_name.rda 实例,每次都会覆盖前一个实例,而不是创建 RC0034L.rda、RC0081L.rda,...
小智 5
use_data要求提供要保存的对象的不带引号的名称。函数中没有名为name, 的参数,据我所知,name = df-name它什么也没做。尝试do.call一下。
library(usethis)
library(readtext)
library(tidyverse)
site_list = c('0034L','0081L','0089L','0166L','0220R','0236L','0307R',
'0333L','0414R','0434L','0445L','0450L','0476R','0501R','0515L',
'0566R','0629R','0651R','0688R','0701R','0817L','0846R','0876L',
'0917R','0938L','1044R','1194R','1227R','1233L','1377L','1396R',
'1459L','1726L','1833R','1946L','2023R','2133L','2201R','2255R')
for (i in 1:length(site_list)){
sitename = site_list[i]
filename = paste0('M:/Tools/GCsandbar/data-raw/',sitename,"sd.csv")
data = read.csv(filename, header = T)
df_name = paste0('RC',sitename,'sd')
assign(df_name, data)
do.call("use_data", list(as.name(df_name), overwrite = TRUE))
}
Run Code Online (Sandbox Code Playgroud)