0

この固定幅ファイルをRで読み込もうとしています。2番目の変数の値が「A」になるように、長さが2、2、6の最初の3列のみを読みたいと思います。2番目の変数には2つのスペースがありますが、実際には1文字だけであることに注意してください。私はこのコマンドを使用しています:

b = trim(read.csv(pipe("awk -v FIELDWIDTHS='2 2 6' -v OFS=',' '($2=='A '){ $1=$1 ''; print }'</path/rawk.txt"),header=F))

このエラーが発生します:

awk: cmd. line:1: ($2==A
awk: cmd. line:1:       ^ unexpected newline or end of string
Error in read.table(file = file, header = header, sep = sep, quote = quote,  : 
  no lines available in input

'A'の空のスペースを削除した場合:

b = trim(read.csv(pipe("awk -v FIELDWIDTHS='2 2 6' -v OFS=',' '($2=='A'){ $1=$1 ''; print }'</path/rawk.txt"),header=F))

それでもこのエラーが発生します:

Error in read.table(file = file, header = header, sep = sep, quote = quote,  : 
  no lines available in input

私は何が間違っているのですか?

4

2 に答える 2

2

これはうまくいくようです:

read.csv(pipe("awk -v FIELDWIDTHS='2 2 6' -v OFS=',' '($2==\"A \"){ $1=$1 \'\'; print }'<rawk.txt"),header=FALSE)


  V1 V2    V3
1 10 A  10001
2 10 A  10002
3 10 A  10003

しかし、 $1=$1 が何であるかはわかりません...

于 2013-01-10T14:14:48.543 に答える
2

この単純なことについて、行内の「実際の」固定幅フィールドを考慮するよりも、行の部分文字列を簡単に確認できないでしょうか?

b = trim(read.csv(pipe("awk 'substr($0,3,2)==\"A \"' /path/rawk.txt"),header=F))
于 2013-01-10T14:26:22.773 に答える