如何将数据集放入 R 包中

Posted

技术标签:

【中文标题】如何将数据集放入 R 包中【英文标题】:How to put datasets into an R package 【发布时间】:2013-05-06 14:46:52 【问题描述】:

我正在创建自己的 R 包,我想知道可以使用哪些方法将(时间序列)数据集添加到我的包中。具体如下:

我创建了一个名为 data 的包子目录,我知道这是我应该保存要添加到包中的数据集的位置。我也知道包含数据的文件可能是 .rda.txt.csv 文件。

我要添加到包中的每个数据系列都包含一列数字(例如,340 或 4.5 的形式),并且每个系列的数据长度不同。

到目前为止,我已将所有数据集保存到 .txt 文件中。我还使用 data() 函数成功加载了数据。但是问题没有解决。

问题在于,除了长度最大的系列之外,每个系列的数据都作为一个因素加载。作为因子加载的系列包含缺失值(形式为“.”)。我必须添加这些缺失值以使每列数据的长度相同。我尝试将数据保存为不相等的列,但在调用 data() 后收到错误消息。

添加缺失值以加载数据的结果是,一旦加载数据,我需要删除 NA 以便继续分析数据!所以,这显然不是一个好的做事方式。

理想情况下(我想),我希望将数据加载为数字向量或列表。这样,我就不需要在每个系列的末尾附加 NA。

我该如何解决这个问题?我应该将所有数据保存到一个文件中吗?如果是这样,我应该以什么格式进行?也许我应该将数据集保存到多个文件中?再次,以哪种格式?这样做的最佳实用方法是什么?任何提示将不胜感激。

【问题讨论】:

【参考方案1】:

我不确定我是否正确理解了您的问题。但是,如果您以自己喜欢的格式编辑数据并保存为

save(myediteddata, file="data.rda")

数据应该完全按照您在 R 中看到的方式加载。

要加载数据目录中的所有文件,您应该添加

LazyData: true

到你的DESCRIPTION文件,在你的包中。

如果这对您没有帮助,您可以发布您的一个文件并打印您想要的格式,这将有助于我们为您提供帮助;)

【讨论】:

谢谢,user1265067。你的建议对我帮助很大。最后,我决定以我喜欢的格式将每个系列保存为单独的 .rda 文件。这种方法对我很有魅力。现在我可以继续创建 .rd 文件并将它们放入 man 子目录中,以便描述我的包中的数据集。干杯!顺便说一句,很抱歉没有让我的问题易于理解 - 这是一个很难用语言表达的问题。 @GraemeWalsh:您能解释一下您是如何在代码中使用这些 .rda 文件的吗?是否可以使用 .rds 文件? @Ankit 使用 load() 函数将数据加载到工作区。 en.wikibooks.org/wiki/R_Programming/…这有帮助吗?【参考方案2】:

除了保存为 rda 文件,您还可以选择将它们加载为数字:

 read.table( ... , colClasses="numeric")

或作为非因素文本:

 read.table( ..., as.is=TRUE) # which does pretty much the same as stringsAsFactors=FALSE
 read.table( ..., colClasses="character")

似乎data 函数会接受这些参数,因为它被记录为read.table(..., header=TRUE) 的简单包装器。

【讨论】:

谢谢你的帮助,DWin。【参考方案3】:

数据的首选保存位置取决于其格式。

正如Hadley 建议的那样:

如果您想存储二进制数据并使其可供用户使用, 把它放在data/。这是放置示例数据集的最佳位置。 如果您想存储已解析的数据,但不将其提供给 用户,请将其放入R/sysdata.rda。这是放置数据的最佳位置 您的功能需要。 如果要存储原始数据,请将其放入inst/extdata

我建议您查看链接的章节,因为它详细介绍了在开发 R 包时如何处理数据。

【讨论】:

以上是关于如何将数据集放入 R 包中的主要内容,如果未能解决你的问题,请参考以下文章

R语言使用caret包中的createResample函数进行机器学习数据集采样数据集有放回的采样(bootstrapping)

R语言e1071包中的支持向量机:仿真数据(螺旋线性不可分数据集)简单线性核的支持向量机SVM(模型在测试集上的表现可视化模型预测的结果添加超平面区域与原始数据标签进行对比分析)如何改进核函数

R语言使用caret包中的createDataPartition函数进行机器学习数据集划分划分训练集和测试集并指定训练测试比例

R语言使用caret包中的createDataPartition函数进行机器学习数据集划分划分训练集和测试集并指定训练测试比例

R语言基于MASS包中的shuttle数据集以及neuralnet包构建神经网络模型

带有 viewbag 的 MVC 数据集