Я пытаюсь прочитать значение R.version.string с помощью оператора []. В результате возникает исключение. Вместо этого с R.parseEval («R.version.string») в порядке. Ниже приведен пример изменения rinside_sample0.cpp, показывающий проблему.RInside: невозможно прочитать R ["R.version.string"] как строка
#include <RInside.h> // for the embedded R via RInside
int main(int argc, char *argv[]) {
RInside R(argc, argv); // create an embedded R instance
try {
std::string versionKO = R["R.version.string"];
} catch(std::exception& ex) {
std::cerr << "Exception caught: " << ex.what() << std::endl;
} catch(...) {
std::cerr << "Unknown exception caught" << std::endl;
}
std::string versionOK = R.parseEval("R.version.string");
std::cout << versionOK << std::endl;
R["txt"] = "Hello, world!\n"; // assign a char* (string) to 'txt'
R.parseEvalQ("cat(txt)"); // eval the init string, ignoring any returns
exit(0);
}
Выход полученный:
Exception caught: expecting a string
R version 3.1.2 (2014-10-31)
Hello, world!
Пожалуйста, ** НЕ ДВОЙНАЯ ПОЧТА **. Я только что ответил и закрыл ваш билет на выпуск GitHub. Нет вопроса о вашем вопросе, если вы ошибочно полагаете, что первый подход должен работать. Это не будет, и это не ошибка ... –