簡體   English   中英

R / data.table:讀取帶有fread的多行腳本

[英]R/data.table: read multiline script with fread

我正在使用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 

嵌入paste是一種替代方法:

fread(paste("cat test1.txt",
           "test2.txt"))

如果您正在尋找一種讀取多個文本文件的簡便方法,則可以使用

fread("cat t*.txt")

或者.txt文件不遵循上述示例文件名模式,則可以將它們移至子目錄(例如“數據”)並按以下方式全部讀取:

fread("ls data | cat")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM