我在使用 RInside 与控制台时遇到了问题。这一切都在 ubuntu 14.04 上运行,使用通过 CRAN 的 apt-get 安装的 R 3.2.4。这是c ++和R代码:
#include <RInside.h> // for the embedded R via RInside
int main(int argc, char *argv[]) {
RInside R(argc, argv); // create an embedded R instance
R.parseEval("source('abline.R')");
}
abline.R
bp <- data.frame(
age = c(28, 23, 52, 42, 27, 29, 43, 34, 40, 28),
systolic = c(70, 68, 90, 75, 68, 80, 78, 70, 80, 72))
str(bp)
attach(bp)
bp.lm <- lm(systolic ~ age)
plot(age, systolic)
abline(bp.lm)
lines(lowess(age, systolic, f=0.75), lty=2)
R 代码在控制台上运行良好,但在程序运行时出错。
mlilback@rc2x:/tmp/abtest$ ./abtest
'data.frame': 10 obs. of 2 variables:
$ age : num 28 23 52 42 27 29 43 34 40 28
$ systolic: num 70 68 90 75 68 80 78 70 80 72
Error in if (noInt) { : argument is of length zero
terminate called after throwing an instance of 'std::runtime_error'
what(): Error evaluating: source('abline.R')
Aborted (core dumped)
这if (noInt) {
是来自 abline 的来源(我的 R 版本中的第 18 行)。我完全不明白为什么这只能通过 RInside 发生。
有任何想法吗?