Tôi muốn truyền một bảng dữ liệu lớn vào R LINE BY LINE và nếu dòng hiện tại có điều kiện cụ thể (cho phép nói các cột đầu tiên> 15), hãy thêm dòng vào dữ liệu trong bộ nhớ. Tôi đã viết mã sau:R - Đọc dòng STDIN theo dòng
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);
Nhưng tôi nhận được lỗi "dữ liệu không khả dụng". Xin lưu ý rằng dữ liệu của tôi lớn và tôi không muốn đọc tất cả cùng một lúc và áp dụng điều kiện của tôi (trong trường hợp này thật dễ dàng).
Bạn có thể quan tâm đến câu trả lời và nhận xét về q này: http://stackoverflow.com/questions/9352887/strategies-for-reading-in-csv-files-in-pieces –
xem '? Scan ','? readLines', 'nrows' đối số của' read.table', và lưu ý rằng giải pháp của bạn sẽ được ** rất ** chậm trong R - bạn có thể sử dụng Perl, hoặc thậm chí awk, để tiền xử lý? –
Câu trả lời của tôi dưới đây về tốc độ như thế nào? Về bản chất tôi mở một tập tin và tiếp tục trích xuất các dòng từ nó mà không đóng tập tin. –