如何在usethis::use_data()中动态更改for循环中的名称

如何在usethis::use_data()中动态更改for循环中的名称,r,rstudio,R,Rstudio,这是我第一次创建R包。我正在尝试将39个不同的数据集包含到我的包的预加载数据中。但是,创建.rda文件的usethis::use_data()函数只接受一个不带引号的名称,而不是变量。所以 数据=来自循环的动态名称 它会不断创建一个文件data.rda,而不是从_for_loop.rda创建动态的_name_ library(usethis) library(readtext) library(tidyverse) site_list = c('0034L','0081L','0089L','

这是我第一次创建R包。我正在尝试将39个不同的数据集包含到我的包的预加载数据中。但是,创建.rda文件的usethis::use_data()函数只接受一个不带引号的名称,而不是变量。所以 数据=来自循环的动态名称

它会不断创建一个文件data.rda,而不是从_for_loop.rda创建动态的_name_

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
}

这只创建了39个df_name.rda实例,每次都覆盖上一个实例,而不是创建RC0034L.rda、RC0081L.rda等。

在循环中,
使用_数据
可以更改为
使用_数据

usethis::use_data_raw(df_name)

use_data
要求保存对象的非引号名称。 函数中没有名为
name
的参数,就我所见,
name=df name
什么也不做。 尝试
do。改用呼叫

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))
}

这个问题和答案看起来很相似。