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
    中最好的功能之一。我有从管道中读取其他命令、读取压缩数据等示例(在工作中)

    下面是一个简单的模拟示例:

    似乎我写了太多的专栏(行名),但你明白了

    现在,您甚至不需要
    fread
    (但它仍然比其他选项更强大):

    R自己发现需要压缩文件

    编辑:我之前在编辑这个问题时,它在我下面被删除了,这几乎是去激励。简言之:


    • system.file()。出于某种原因,我使用了上面的
      read.table
      ——这两个函数都存在错误。我通常对data.table使用
      fread()
      。出于某种原因,我使用了上面的
      read.table
      ——这两个函数都存在错误。可以执行两个步骤:1、system.file是否找到该文件?在执行读取步骤之前,通过
      文件检查是否存在。2.如果找到文件,read.csv能处理吗?通过在命令行上运行read.csv和文件的完整路径进行测试。也许您的R版本中没有gzip读取功能?为了帮助我们,请将您的代码或一个说明问题的小示例放在github这样的公共站点上。R软件包可以非常灵活,人们可以在其上使用一系列工具。我很惊讶
      devtools::document()
      在函数中运行代码,除非它运行的测试或示例您没有向我们展示。@Spacedman感谢您的帮助。我正在运行
      library(devtools)
      ,然后在包根目录中运行
      document()
      。由于
      system.file()
      是以编写R扩展名的形式记录的,所以这个问题应该以研究不足或英语不好而被修改为结束。而且,这是错误的:
      my_function()=function(){
      -您没有在函数名中添加
      ()
      :它应该是:
      my_function=function(){
      。当我在一个最小的示例上运行
      文档时,我看到以下警告:
      “我的函数()中的错误=函数(){(来自fnord.R#1):”
      @Spacedman谢谢。我已编辑。键入错误。您可以执行两个步骤:1,system.file是否找到文件?在执行读取步骤之前,通过
      file.exists检查是否存在。
      。2.如果确实找到文件,read.csv是否可以处理它?在命令行上运行read.csv并提供文件的完整路径进行测试。也许您没有gzip读取功能R版本中的y?为了帮助我们帮助您,请将您的代码或一个说明问题的小示例放在github这样的公共网站上。R软件包可以很方便地使用,并且有一系列人们使用的工具。我非常惊讶
      devtools::document()
      在函数中运行代码,除非它运行的测试或示例您没有向我们展示。@Spacedman感谢您的帮助。我正在运行
      library(devtools)
      然后在包根目录中运行
      document()
      。As
      system.file()
      是在编写R扩展时记录的,这个问题应该以研究不足或英语不好而被修改为结束。而且,这是错误的:
      my_function()=function(){
      -你没有在函数名中添加
      ()
      :它应该是:
      my_function=function(){
      。当我在一个最小的示例上运行
      document
      时,我看到以下警告:
      “my_function()=function(){(来自fnord.R#1):”
      @Spacedman谢谢。我编辑了。我的输入错误。
      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>