簡體   English   中英

在用戶定義的R包中加載.Rdata

[英]Load .Rdata in User defined R package

我正在構建自己的R包,並且有一個需要程序訪問的參考數據框。 它不是很大,需要用戶提供的字符串來搜索適當的數據。

本質上,我有一個帶有1個數據幀的.Rdata文件。 我已將文件存儲在package文件夾的/ Rpackage_name / data /目錄中。

我想讓程序包加載數據或訪問其內容。 這就是讓我困惑的地方。

我究竟做錯了什么?

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

如果它確實不大,則將其放入代碼中。 這是怎么做。 將數據加載到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 = ...

您可以dumpdump到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")

暫無
暫無

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

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