2

561366行15列で構成される.txtファイルを読み込もうとして問題が発生しました。最初の行は次のようになります。

  70000||Consumer A||23||DN||70000||10038782||1||SI||2||NO||0||N/A||0||N/A||1
  90000||Consumer B||23||DN||90000||15402432||1||SI||2||NO||0||N/A||0||N/A||1 
  .
  .
  .

ファイルの読み取りに使用しているコードは次のとおりです。

  Datos <- read.table("C:/Users/hernandezn/Desktop/DataSets/INACTIVOS.txt", 
  header=FALSE, sep="|", na.strings="N/A", dec=".", strip.white=TRUE)

ご覧のとおり、私の列はで区切られていますが、Rコマンドでオプションとして"||"使用することはできません。だから、私はそれを使用し、その代償を払わなければなりません(今は29列あります)。read.tablesepsep="|"

問題は、ファイルにある561366から241116行を取得していることです。一方、"||"シンボルを置き換え;て.xlsxファイルとして保存することでこのファイルを読み取ろうとしましたが、この方法ですべての行を取得しています。

この問題を解決する方法を教えていただけますか?それはメモリの問題でしょうか?2GBのメモリRAMを搭載したコンピュータで32ビットRバージョンを実行しています。

4

1 に答える 1

3

sep=キャラクターは長さが1でなければならないと思います。したがって、外部コマンド(sedまたはなどperl)を呼び出して2文字を置き換える||か、Rで自分で行うことができます。

これは、最初にに切り替える概念実証の1ライナーです||,メタ|文字と同様に、エスケープする必要があり、エスケープ文字\もエスケープする必要があります)。

R> read.csv(textConnection(gsub("\\|\\|", ",", "70000||Consumer A||23||DN||70000||10038782||1||SI||2||NO||0||N/A||0||N/A||1\n90000||Consumer B||23||DN||90000||15402432||1||SI||2||NO||0||N/A||0||N/A||1")), header=FALSE)
     V1         V2 V3 V4    V5       V6 V7 V8 V9 V10 V11 V12 V13 V14 V15
1 70000 Consumer A 23 DN 70000 10038782  1 SI  2  NO   0 N/A   0 N/A   1
2 90000 Consumer B 23 DN 90000 15402432  1 SI  2  NO   0 N/A   0 N/A   1
R> 

または、2行で読みやすくなります。

R> txt <- "70000||Consumer A||23||DN||70000||10038782||1||SI||2||NO||0||N/A||0||N/A||1\n90000||Consumer B||23||DN||90000||15402432||1||SI||2||NO||0||N/A||0||N/A||1"
R> read.csv(textConnection(gsub("\\|\\|", ",", txt)), header=FALSE)
     V1         V2 V3 V4    V5       V6 V7 V8 V9 V10 V11 V12 V13 V14 V15
1 70000 Consumer A 23 DN 70000 10038782  1 SI  2  NO   0 N/A   0 N/A   1
2 90000 Consumer B 23 DN 90000 15402432  1 SI  2  NO   0 N/A   0 N/A   1
R> 
于 2012-05-08T15:41:38.270 に答える