14

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

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

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

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

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

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

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

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

4

3 回答 3

8

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

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

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

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

LazyData: true

到您的说明文件,在您的包中。

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

于 2013-05-12T15:08:59.430 回答
4

除了保存为 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).

于 2013-05-12T16:55:56.320 回答
1

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

正如哈德利建议的那样:

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

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

于 2017-01-25T14:11:11.103 回答