2017-02-06 3 views
0

私はdata.table::freadを使用して、シェルスクリプトからの入力を読んでいます。読みやすさのために、私は複数の行に行継続文字 '\'を使ってスクリプトを分割したいと思います。R/data.table:freadを使ったマルチラインスクリプトを読む

しかし、freadは、複数行のシェルスクリプトが好きではないようです。

例:

library(data.table) 
fread("cat test1.txt test2.txt") ## OK 

今2行に分割するスクリプト:

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でそのファイルを呼び出します。

これらは私の設定です:paste内に埋め込む

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 
+2

を改行を含むことによって、あなたの入力がCSVであると信じて 'fread'をトリガしていますコマンドラインスクリプトではありません。 'fread(paste0( 'cat test.txt'、 'test.txt'))' – MichaelChirico

+0

@MichaelChiricoは価値があるように、空白で保存しようとしている場合は、コマンドラインではなくRそのものを使用します。あなたのコメントを回答として追加するには? – dww

答えて

2

は、代替です:

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

あなたが複数のテキストファイルを読み取るための簡単な方法を探しているなら、あなたは

を使用することができますいずれか
fread("cat t*.txt") 

.txtファイルが上記のパターン例に従わない場合o Fファイル名は、おそらく(「データ」と言う)のサブディレクトリに移動し、以下のようにそれらのすべてをお読みください。

fread("ls data | cat") 
関連する問題