在用户定义的R包中加载.Rdata

时间:2014-07-24 00:42:57

标签: r package

我正在构建自己的R包,并且我有一个需要程序访问的参考数据框。它不是很大,需要用户提供的字符串来搜索适当的数据。

基本上,我有一个带有1个数据帧的.Rdata文件。我已将该文件存储在包文件夹的/ Rpackage_name / data /目录中。

我希望包能够加载数据或访问其内容。这让我很困惑。

我做错了什么?

GenericPackageName <- function () {
    #data("GenericPackageName")    did not work
}

2 个答案:

答案 0 :(得分:0)

如果它真的不大,那就把它放在代码中。这是怎么做的。将数据加载到R中,然后使用sink()函数将输出重定向到文件,使用dput()函数创建创建对象的R代码。假设您的数据集名为iris,请按以下步骤操作:

data(iris)
sink("/tmp/iris.R")
dput(iris)
sink(NULL)

system("cat /tmp/iris.R")

# structure(list(Sepal.Length = c(5.1, 4.9, 4.7, 4.6, 5, 5.4, 4.6, 
# 5, 4.4, 4.9, 5.4, 4.8, 4.8, 4.3, 5.8, 5.7, 5.4, 5.1, 5.7, 5.1, 
# ...
# 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
# 3L), .Label = c("setosa", "versicolor", "virginica"), class = "factor")), .Names = c("Sepal.Length", 
# "Sepal.Width", "Petal.Length", "Petal.Width", "Species"), row.names = c(NA, 
# -150L), class = "data.frame")

然后只需将此代码包含在您的包中:

mydata <- structure(list(Sepal.length = ...

答案 1 :(得分:0)

您可以dump将其放入R文件并将该文件放在R文件夹中。将包添加到搜索列表时,将获取文件并创建对象。

这是一个例子

## create some data in a fresh R session
> ls()
# character(0)
> d <- data.frame(x = 1:5, y = letters[1:5])
> save.image()
## load the data into R
> load(".RData", verbose = TRUE)
#Loading objects:
#  d
#  .Random.seed
## dump it into "newData.R" then source it
> dump("d", "newData.R")
> source("newData.R")
> ls()
# "d"

以下是dump做什么

> cat(readLines("newData.R"))
# d <- structure(list(x = 1:5, y = structure(1:5, .Label = c("a", "b",  
#     "c", "d", "e"), class = "factor")), .Names = c("x", "y"), 
#     row.names = c(NA,  -5L), class = "data.frame")