R包:通过system.file()和R data.table中的read.table()读入数据
我正在用R包:通过system.file()和R data.table中的read.table()读入数据,r,data.table,r-package,R,Data.table,R Package,我正在用/data中的几个文件创建一个R包。在R包中加载数据的方法是使用system.file() 我想加载到R data.table中的/data文件的扩展名为*.txt.gz,my_file.txt.gz。如何通过read.table()或fread()将其加载到data.table中 在R脚本中,我尝试了: #' @import data.table #' @export my_function = function(){ my_table = read.table(system
/data
中的几个文件创建一个R包。在R包中加载数据的方法是使用system.file()
我想加载到R data.table中的/data
文件的扩展名为*.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()
导致错误:
我似乎通过fread()
这将输出错误:
Input is either empty or fully whitespace after the skip or autostart. Run again with verbose=TRUE.
因此,
system.file()
似乎没有为文件提供可以加载到R data.table中的对象。我该怎么做 帮自己一个大忙,仔细研究fread()
:它是data.table
中最好的功能之一。我有从管道中读取其他命令、读取压缩数据等示例(在工作中)
下面是一个简单的模拟示例:
似乎我写了太多的专栏(行名),但你明白了
现在,您甚至不需要fread
(但它仍然比其他选项更强大):
R自己发现需要压缩文件
编辑:我之前在编辑这个问题时,它在我下面被删除了,这几乎是去激励。简言之:
有效,例如system.file()
file帮你自己一个大忙,仔细研究
:它是fread()
中最好的功能之一。我有从管道中读取其他命令、读取压缩数据等示例(在工作中) 下面是一个简单的模拟示例: 似乎我写了太多的专栏(行名),但你明白了 现在,您甚至不需要data.table
(但它仍然比其他选项更强大): R自己发现需要压缩文件 编辑:我之前在编辑这个问题时,它在我下面被删除了,这几乎是去激励。简言之:fread
system.file()。出于某种原因,我使用了上面的
——这两个函数都存在错误。我通常对data.table使用read.table
。出于某种原因,我使用了上面的fread()
——这两个函数都存在错误。可以执行两个步骤:1、system.file是否找到该文件?在执行读取步骤之前,通过read.table
文件检查是否存在。2.如果找到文件,read.csv能处理吗?通过在命令行上运行read.csv和文件的完整路径进行测试。也许您的R版本中没有gzip读取功能?为了帮助我们,请将您的代码或一个说明问题的小示例放在github这样的公共站点上。R软件包可以非常灵活,人们可以在其上使用一系列工具。我很惊讶
在函数中运行代码,除非它运行的测试或示例您没有向我们展示。@Spacedman感谢您的帮助。我正在运行devtools::document()
,然后在包根目录中运行library(devtools)
。由于document()
是以编写R扩展名的形式记录的,所以这个问题应该以研究不足或英语不好而被修改为结束。而且,这是错误的:system.file()
-您没有在函数名中添加my_function()=function(){
:它应该是:()
。当我在一个最小的示例上运行my_function=function(){
文档时,我看到以下警告:
@Spacedman谢谢。我已编辑。键入错误。您可以执行两个步骤:1,system.file是否找到文件?在执行读取步骤之前,通过“我的函数()中的错误=函数(){(来自fnord.R#1):”
。2.如果确实找到文件,read.csv是否可以处理它?在命令行上运行read.csv并提供文件的完整路径进行测试。也许您没有gzip读取功能R版本中的y?为了帮助我们帮助您,请将您的代码或一个说明问题的小示例放在github这样的公共网站上。R软件包可以很方便地使用,并且有一系列人们使用的工具。我非常惊讶file.exists检查是否存在。
在函数中运行代码,除非它运行的测试或示例您没有向我们展示。@Spacedman感谢您的帮助。我正在运行devtools::document()
然后在包根目录中运行library(devtools)
。Asdocument()
是在编写R扩展时记录的,这个问题应该以研究不足或英语不好而被修改为结束。而且,这是错误的:system.file()
-你没有在函数名中添加my_function()=function(){
:它应该是:()
。当我在一个最小的示例上运行my_function=function(){
时,我看到以下警告:document
@Spacedman谢谢。我编辑了。我的输入错误。“my_function()=function(){(来自fnord.R#1):”
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
#' @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.
R> write.csv(iris, file="/tmp/demo.csv") R> system("gzip /tmp/demo.csv") # to be very plain R> fread("zcat /tmp/demo.csv.gz") V1 Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1: 1 5.1 3.5 1.4 0.2 setosa 2: 2 4.9 3.0 1.4 0.2 setosa 3: 3 4.7 3.2 1.3 0.2 setosa 4: 4 4.6 3.1 1.5 0.2 setosa 5: 5 5.0 3.6 1.4 0.2 setosa --- 146: 146 6.7 3.0 5.2 2.3 virginica 147: 147 6.3 2.5 5.0 1.9 virginica 148: 148 6.5 3.0 5.2 2.0 virginica 149: 149 6.2 3.4 5.4 2.3 virginica 150: 150 5.9 3.0 5.1 1.8 virginica R>
R> head(read.csv(file="/tmp/demo.csv.gz")) X Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 1 5.1 3.5 1.4 0.2 setosa 2 2 4.9 3.0 1.4 0.2 setosa 3 3 4.7 3.2 1.3 0.2 setosa 4 4 4.6 3.1 1.5 0.2 setosa 5 5 5.0 3.6 1.4 0.2 setosa 6 6 5.4 3.9 1.7 0.4 setosa R>