大きなデータテーブルをR LINE BY LINEにストリーミングしたい場合、現在の行に特定の条件がある場合(最初の列が> 15であるとします)、その行をデータに追加しますメモリ内のフレーム。私は次のコードを書いた:R - 行ごとにSTDINを読む
count<-1;
Mydata<-NULL;
fin <- FALSE;
while (!fin){
if (count==1){
Myrow=read.delim(pipe('cat /dev/stdin'), header=F,sep="\t",nrows=1);
Mydata<-rbind(Mydata,Myrow);
count<-count+1;
}
else {
count<-count+1;
Myrow=read.delim(pipe('cat /dev/stdin'), header=F,sep="\t",nrows=1);
if (Myrow!=""){
if (MyCONDITION){
Mydata<-rbind(Mydata,Myrow);
}
}
else
{fin<-TRUE}
}
}
print(Mydata);
しかし、私はエラー "データが利用できません"が表示されます。 私のデータは大きく、一度にすべてを読んで自分の条件を適用したくないということに注意してください(この場合は簡単でした)。
あなたは、このQの回答やコメントに興味がある可能性があり:http://stackoverflow.com/questions/9352887/strategies-for-reading-in-csv-files-in-pieces –
は '見スキャン? '、'?readLines'、 'nrows'引数に' read.table'を追加して、あなたの解決策が** Rで非常に遅くなることに気をつけてください。Perlやawkを前処理することはできますか? –
私の答えはスピードの点でどのように運賃ですか?本質的に私はファイルを開き、ファイルを閉じることなくファイルから行を引き出します。 –