我使用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
答案 0 :(得分:2)
嵌入paste
是另一种选择:
fread(paste("cat test1.txt",
"test2.txt"))
如果您正在寻找一种简单的方法来阅读多个文本文件,您可以使用
fread("cat t*.txt")
或者如果.txt文件不遵循上面的文件名示例模式,也许可以将它们移动到子目录(比如'data')并按以下方式读取它们:
fread("ls data | cat")