我正在创建自己的R包,我想知道可以使用哪些方法将(时间序列)数据集添加到我的包中。以下是具体内容:
我创建了一个名为 data 的包子目录,我知道这是我应该保存要添加到包中的数据集的位置。我也认识到包含数据的文件可能是。 rda , .txt 或 .csv 文件。
我想要添加到包中的每一系列数据都包含一列数字(例如,形式为340或4.5),每个数据系列的长度不同。
到目前为止,我已将所有数据集保存到 .txt 文件中。我还使用 data()函数成功加载了数据。然而,问题没有解决。
问题在于每个数据系列都作为一个因素加载,除了长度最大的系列。作为因子加载的系列包含缺失值(形式为'。')。我不得不添加这些缺失值,以使每列数据的长度相同。我尝试将数据保存为不相等的列,但在调用 data()后收到错误消息。
添加缺失值以加载数据的结果是,一旦加载了数据,我需要删除NA,以便继续我的数据分析!所以,这显然不是一种好的做事方式。
理想情况下(我想),我希望将数据作为数字向量或列表加载。通过这种方式,我不需要在每个系列的末尾添加NA。
我该如何解决这个问题?我应该将所有数据保存到一个文件中吗?如果是这样,我应该采用何种格式?也许我应该将数据集保存到多个文件中?再次,以哪种格式?这样做的最佳实用方法是什么?非常感谢任何提示。
答案 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包时使用数据。