2016-06-16 10 views
1

私は、HDFSのマッパーコード(Rコード)のテキストを1行ずつ読み込んでいます。テキストは次のようになります。ファイル接続から読み込まれた文字列から " N"を取り除くR

15059773^A3872^A\N^A2015-09-05^A\N^A2015-09-01^A3^A0^A0^A\N^Ashirts adult male^Axl^A\N^A5183656^Ac1 13 me ult tee c^Ablue^Awatersport blue^A\N^A\N^A\N^A0^A\N^A3^Amn^A45.05273^A-93.365555^A100^A131^A27.0^A13.0^A8.0^A85.0^A57.0^A21.0^A1012.0^A0^A0^A1^A0^A43^A3^A4 
15432724^A7720^A\N^A2015-09-05^A\N^A2015-09-01^A3^A0^A0^A\N^Ashirts adult male^Al^A\N^A5183656^Ac1 13 me ult tee c^Ablue^Ablue foil^A\N^A\N^A\N^A0^A\N^A3^Amn^A45.05273^A-93.365555^A100^A131^A27.0^A13.0^A8.0^A85.0^A57.0^A21.0^A1012.0^A0^A0^A1^A0^A43^A3^A4 

とループでそれを読むために使用されるコードです:

いくつかの空白がある場合、私のフィールドセパレータと \Nが存在しているとして、私は ^Aを持っている上にテキストで
input <- file("stdin", "r") 

while(length(line <- readLines(input, n=1, warn=FALSE)) > 0) 
{ 
} 
close(input) 

(RのNA)。私はを\001で分けることができました(どのように動作するのかわかりません)。しかし、私は\Nを置き換える際に問題に直面しています。私は提案を試した: remove all line breaks (enter symbols) from the string using Rといくつか;しかし、何も動作しません。私も\\Nで試しましたが、それもうまくいきません。

最初の行のための私の予想出力があるので、私はラインで、この行を処理していたよう:

"15059773" "3872" NA "2015-09-05" NA "2015-09-01" "3" "0" "0" NA "shirts adult male" "xl" NA "5183656" "c1 13 me ult tee c" "blue" "watersport blue" NA NA NA "0" NA "3" "mn" "45.05273" "-93.365555" "100" "131" "27.0" "13.0" "8.0" "85.0" "57.0" "21.0" "1012.0" "0" "0" "1" "0" "43" "3" "4" 

答えて

1

これが動作しているようだ:

ifelse(strsplit(string, "\\^A")[[1]] == "\\N", NA, strsplit(string, "\\^A")[[1]]) 
[1] "15059773"   "3872"    NA     "2015-09-05"   NA     
[6] "2015-09-01"   "3"     "0"     "0"     NA     
[11] "shirts adult male" "xl"     NA     "5183656"   "c1 13 me ult tee c" 
[16] "blue"    "watersport blue" NA     NA     NA     
[21] "0"     NA     "3"     "mn"     "45.05273"   
[26] "-93.365555"   "100"    "131"    "27.0"    "13.0"    
[31] "8.0"    "85.0"    "57.0"    "21.0"    "1012.0"    
[36] "0"     "0"     "1"     "0"     "43"     
[41] "3"     "4"  

データ

cat(string) 
15059773^A3872^A\N^A2015-09-05^A\N^A2015-09-01^A3^A0^A0^A\N^Ashirts adult male^Axl^A\N^A5183656^Ac1 13 me ult tee c^Ablue^Awatersport blue^A\N^A\N^A\N^A0^A\N^A3^Amn^A45.05273^A-93.365555^A100^A131^A27.0^A13.0^A8.0^A85.0^A57.0^A21.0^A1012.0^A0^A0^A1^A0^A43^A3^A4 
関連する問題