Ответ 1
Я думаю, было бы разумнее использовать функцию R, например readLines
. readLines
поддерживает только чтение определенного количества строк, например. 1. Объедините это, открыв сначала соединение file
, а затем вызывая readLines
, вы получаете то, что хотите. При вызове readLines
несколько раз, следующие строки n
считываются из соединения. В коде R:
stop = FALSE
f = file("/tmp/test.txt", "r")
while(!stop) {
next_line = readLines(f, n = 1)
## Insert some if statement logic here
if(length(next_line) == 0) {
stop = TRUE
close(f)
}
}
Дополнительные комментарии:
- R имеет внутренний способ обработки stdin как файла:
stdin()
. Я предлагаю вам использовать это вместо использованияpipe('cat /dev/stdin')
. Это, вероятно, делает его более надежным и, безусловно, более кросс-платформенным. - Вы инициализируете
Mydata
в начале и продолжаете расти с помощьюrbind
. Если количество строк, которые выrbind
, станет больше, это будет очень медленным. Это связано с тем, что, когда объект растет, ОС необходимо найти для него новую ячейку памяти, которая заканчивается тем, что занимает много. Лучше предварительно выделитьMydata
или использовать циклы стиля приложения.