这是我第一次尝试创建一个包,所以我猜这是一个非常基本的问题。基本上我想从我的包中导出以下函数:
load_data <- function() {
requireNamespace(XML, quietly = TRUE)
xmlfile <- XML::xmlParse("//server/folder/file.xml")
ps <<- XML::xmlToDataFrame(xmlfile, stringsAsFactors = TRUE)
}
find_record <- function(search_string) {
return(ps$Var1[ps$Var2 == search_string])
}
delete_record <- function(search_string) {
ps <<- ps[ps$Var2 != search_string, ]
return(TRUE)
}
但我不想创建全局变量&#39; ps。什么是将大型数据集用于包内其他功能的正确方法?
答案 0 :(得分:1)
如果数据文件足够小,可以存储在包中
您的加载函数表明虽然原始数据文件是XML,但它可以转换为数据框。因此,转换为数据框,然后将其作为RData文件保存在包的数据目录中。
如果数据集太大而无法在本地存储,并且它是私有包
您的问题标题暗示它是一个大数据集,并且原始数据驻留在服务器上。在这种情况下,最好将数据存储在数据库中,并在函数内部使用R的数据库访问功能。
如果数据集太大而无法在本地存储,并且它是公共包
我怀疑这超出了问题的范围,但是有大量的R包通过某种Web API提供对在线数据库的访问。