R/data.table:使用fread读取多行脚本

R/data.table:使用fread读取多行脚本,r,shell,data.table,R,Shell,Data.table,我正在使用data.table::fread从shell脚本读取输入。为了可读性,我想使用行延续字符“\”将脚本拆分为多行 然而,fread似乎不喜欢多行上的shell脚本 示例: library(data.table) fread("cat test1.txt test2.txt") ## OK 现在将脚本拆分为两行: fread("cat test1.txt \ test2.txt") Error in fread("cat test.txt \n

我正在使用
data.table::fread
从shell脚本读取输入。为了可读性,我想使用行延续字符“\”将脚本拆分为多行

然而,
fread
似乎不喜欢多行上的shell脚本

示例:

library(data.table)
fread("cat test1.txt test2.txt") ## OK
现在将脚本拆分为两行:

fread("cat test1.txt \
           test2.txt")
Error in fread("cat test.txt \n           test.txt") : 
  Expected sep (' ') but new line, EOF (or other non printing character) ends field 0 when detecting types (   first):            test.txt

## Same problem
fread("cat test.txt \\
           test.txt") 
是否有我丢失的转义序列或开关

如果不是,我想这些都是可能的解决方案:1)根本不拆分脚本2)将脚本写入文件并使用fread调用该文件

以下是我的设置:

sessionInfo()
R version 3.2.3 (2015-12-10)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: CentOS release 6.7 (Final)

locale:
 [1] LC_CTYPE=en_GB.UTF-8       LC_NUMERIC=C               LC_TIME=en_GB.UTF-8        LC_COLLATE=en_GB.UTF-8     LC_MONETARY=en_GB.UTF-8    LC_MESSAGES=en_GB.UTF-8    LC_PAPER=en_GB.UTF-8       LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] data.table_1.10.4

loaded via a namespace (and not attached):
[1] tools_3.2.3  chron_2.3-46 tcltk_3.2.3 

粘贴中嵌入
是另一种选择:

fread(paste("cat test1.txt",
           "test2.txt"))
如果您正在寻找一种简单的方法来读取多个文本文件,您可以使用

fread("cat t*.txt")
或者,如果.txt文件不遵循上述文件名的示例模式,则可以将其移动到子目录(如“data”)并按如下方式读取:

fread("ls data | cat")

粘贴中嵌入
是另一种选择:

fread(paste("cat test1.txt",
           "test2.txt"))
如果您正在寻找一种简单的方法来读取多个文本文件,您可以使用

fread("cat t*.txt")
或者,如果.txt文件不遵循上述文件名的示例模式,则可以将其移动到子目录(如“data”)并按如下方式读取:

fread("ls data | cat")

通过包含换行符,您触发了
fread
,认为您的输入是csv,而不是命令行脚本。如果您试图节省空白,请使用R本身,而不是命令行,例如,
fread(paste0('cat test.txt','test.txt'))
@MichaelChirico似乎值得添加您的注释作为答案?通过包含一个新行,您触发了
fread
,相信您的输入是csv,而不是命令行脚本。如果您试图保存空白,请使用R本身,而不是命令行,例如,
fread(paste0('cat test.txt','test.txt'))
@MichaelChirico是否值得添加您的注释作为答案?