Я хочу передать большую таблицу данных в 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 для предварительной обработки? –
Как мой ответ ниже тарифа с точки зрения скорости? По сути, я открываю файл и продолжаю извлекать строки из него, не закрывая файл. –