如何将数据集放入R包中

时间:2013-05-12 12:22:00

标签: r dataset r-package

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

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

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

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

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

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

理想情况下(我想),我希望将数据作为数字向量或列表加载。通过这种方式,我不需要在每个系列的末尾添加NA。

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

3 个答案:

答案 0 :(得分:8)

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

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

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

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

LazyData: true

到您的包中的DESCRIPTION文件。

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

答案 1 :(得分: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)的简单包装。

答案 2 :(得分:0)

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

正如Hadley建议:

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

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