簡體   English   中英

如何自動從我自己的 package 加載所有數據集

[英]How can I automatically load all data sets from my own package

假設我有兩個包

  • package1
    • 數據集 d1、d2、d3
  • package2應該使用package1中的數據集

package1包含我想用於測試的數據集。 我可以通過例如package1::d1訪問其中的每一個。 但是我怎樣才能以自動方式加載所有這些呢?

就像是

ds <- data(package = "package1") # you can try e.g. "carData"
ds$results[1, 3] # gives the first entry
mydataset <- load(ds$results[1, 3]) # this does not work

其他人會使用這兩個包,所以它應該適用於其他人和不同的平台(Windows,Mac)有什么想法嗎?


ds$results[1, 3]
#  Item 
#  "d1" 

看起來很有希望,但是

data(ds$results[1, 3])
# Warning message:
# In data(ds$results[1, 3]) : data set ‘ds$results[1, 3]’ not found

正如@dcarlson 所指出的,您可以提取 package 中所有數據集的名稱,並將它們作為列表返回給data() function 作為參數list 但是,此解決方案僅為每個數據集而不是實際數據集返回 promise。

my_package <- "datasets"
name_of_all_datasets <- data.frame(data(package = my_package)$results)$Item
data(list = name_of_all_datasets, package = my_package)

我剛剛意識到,有兩種選擇:

你想從inst/extdata加載外部文件

pathExtData <- system.file("extdata", package = "myPackage")
allFilenames <- list.files(pathExtData, full.names = TRUE)
# e.g. in case of Excel files
datalist <- list()
for (i in 1:length(allFilenames)) {
  datalist[[i]] <- readxl::read_xlsx(path = allFilenames[i], sheet = "mySheet")
}

你想從 package 加載 RData 你可以使用

ds <- data(package = "myPackage")
datalist <- list()
for (i in 1:length(ds$results[, 3])) {
  eval(parse(text = paste0("datalist[[", i, "]] <- myPackage::", ds$results[i, 3])))
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM