【发布时间】:2017-12-07 00:05:38
【问题描述】:
我正在创建一个 R 包,其中包含 /data 中的多个文件。 R包中加载数据的一种方式是使用system.file(),
system.file(..., package = "base", lib.loc = NULL, mustWork = FALSE)
/data 中的文件我想加载到 R 数据表中,扩展名为 *.txt.gz、my_file.txt.gz。如何通过read.table() 或fread() 将其加载到data.table 中?
在 R 脚本中,我尝试了:
#' @import data.table
#' @export
my_function = function(){
my_table = read.table(system.file("data", "my_file.txt.gz", package = "FusionVizR"), header=TRUE)
}
这会导致通过devtools document() 出错:
Error in read.table(system.file("data", "my_file.txt.gz", package = "FusionVizR"), header = TRUE) (from script1.R#7) :
no lines available in input
In addition: Warning message:
In file(file, "rt") :
file("") only supports open = "w+" and open = "w+b": using the former
我似乎通过fread() 遇到了同样的问题
#' @import data.table
#' @export
my_function() = function(){
my_table = fread(system.file("data", "my_file.txt.gz", package = "FusionVizR"), header=TRUE)
}
这会输出错误:
Input is either empty or fully whitespace after the skip or autostart. Run again with verbose=TRUE.
因此,system.file() 似乎没有为我可以加载到 R data.table 中的文件提供对象。我该怎么做呢?
【问题讨论】:
-
两步可以做: 1、system.file 找到文件了吗?在执行读取步骤之前通过
file.exists检查。 2.如果它确实找到了文件,read.csv能应付吗?通过在命令行上使用文件的完整路径运行 read.csv 进行测试。也许您的 R 版本没有 gzip 读取功能? -
为了帮助我们帮助您,请将您的代码或说明问题的小示例放在 github 等公共站点上。 R 包可能很繁琐,人们在它们上使用了一系列工具。我很惊讶
devtools::document()正在在您的函数中运行代码,除非它正在运行的测试或您没有向我们展示的示例。 -
@Spacedman 谢谢你的帮助。我在包根目录中运行
library(devtools),然后运行document()。正如system.file()在编写 R 扩展中记录的那样,这个问题应该被关闭,因为研究不足或因英语不好而修改。 -
另外,这是错误的:
my_function() = function(){- 你没有将()放在函数名中:它应该是:my_function = function(){。当我在一个最小示例上运行document时,我看到了这个警告:"Error in my_function() = function() { (from fnord.R#1) :"。 -
@Spacedman 谢谢。已编辑。我的错字。
标签: r data.table r-package