Я работаю над еще одним GUI-интерфейсом для R (главным образом для изучения Qt4 на более или менее актуальном материале), и я наткнулся на необычное поведение задействованных компонентов.Если я пытаюсь записать строку из 76 символов или более в стандартный вывод R через QProcess, вывод (эхо команды) возвращается с включениями мусора и повторением частей строки.Например:
freq.some <- recode(freq, "'some' = 'no'; 'all or most' = 'yes'; else = NA");
отображается как
freq.some <- recode(freq, "'some' = 'no'; 'all or most' = 'yes'; else = NA"
< "'some' = 'no'; 'all or most' = 'yes'; else =
NA") ;
Я пытался работать с выходом прямо на уровне QByteArray, но аномалия уже есть.
Моя версия Qt 4.6.3, R v. 2.11.1, Debian Squeeze.Ниже приведены соответствующие фрагменты кода:
Вот как я запускаю процесс R:
arrr = new QProcess(this);
QString program = "R --interactive --no-readline";
arrr->start(program, QProcess::Unbuffered | QProcess::ReadWrite);
Вот как я записываю команду в процесс R:
QString cmd = ui->lineEdit->displayText();
QString tmp = cmd + "\n";
arrr->write(tmp.toUtf8().data());
Этокак я читаю вывод процесса:
QByteArray output;
QTextStream *ts = new QTextStream(&output);
output = arrr->readAllStandardOutput();
QString r_output = ts->readAll();
Чтение из процесса происходит по сигналу readyRead ().
Заранее извиняюсь, если мой вопрос не соответствует принятым стандартам этогосайт.Спасибо.