代码之家  ›  专栏  ›  技术社区  ›  Josh

如何将sub()的输出管道化到读表()在R中

  •  0
  • Josh  · 技术社区  · 7 年前

    我正在试着用一种简单的方式阅读 csv from this website . 每行以 \t read.delim() read.table()

    \t型

    file.set <- "data_source.txt"
    temp <- file.set %>% 
        readLines() %>% 
        sub(" \\t$", "", .) %>% 
        writeLines()
    

    我搞不懂的是如何用管道输送结果 sub() 命令到 而不是用 writeLines() . 我尝试了以下代码:

    temp <- file.set %>% 
        readLines() %>% 
        sub(" \\t$", "", .) %>% 
        read.delim(quote = NULL)
    #  Error in file(file, "rt") : invalid 'description' argument
    
    temp <- file.set %>% 
        readLines() %>% 
        sub(" \\t$", "", .) %>% 
        writeLines() %>% 
        read.delim(quote = NULL)
    #  [prints info from file.set to console]
    #  Error in read.table(file = file, header = header, sep = sep, quote = quote,  : 
    #    'file' must be a character string or connection
    

    问题可能是我不了解如何正确使用连接(或者使用连接只是错误的方法)。我找到的关于在R中使用连接的教程主要是指从远程数据库获取数据,这让我觉得我做错了。

    1 回复  |  直到 7 年前
        1
  •  2
  •   MrFlick    7 年前

    你不需要在读入数据后把它写出来。你可以直接把它输送到 text= 的参数 read.delim . 例如

    temp <- file.set %>% 
      readLines() %>% 
      sub(" \\t$", "", .) %>% 
      read.delim(text = .)
    

    我无法打开您使用的实际文件(该行对我不起作用),但通常只需读入带有额外列的数据,然后在导入后删除就更容易了。我不清楚你在阅读文件时遇到的“问题”到底是什么。