![](/img/trans.png)
[英]How can I refresh a data source from an R package automatically? Specifically the coronavirus CRAN package data
[英]How can I automatically load all data sets from my own package
假設我有兩個包
package1
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.