I got very strange results when using RStudio to call C++. Here is my R code:
dyn.load("toy.so")
a1<- c(1.0,2.0, 3.0)
a2<- 2.5
y<- rep(6, length(a1))
ans1<- .C("try1", a1=as.numeric(a1),
a2=as.numeric(a2),
y=as.integer(y),
size=as.integer(length(a1)) )
ans1
I want to return a vector y=1*(a1>a2) from my C++ code below
#include
#include <stdio.h>
#include <float.h>
using namespace std;
extern "C"{
void hv1(double a1, double a2, int y, int* size) {
for (int i=0; i< size; i++){
y[i] = 1(a1[i]>a2);
}
return;
}}
I used terminal command
R CMD SHLIB toy.cpp
to compile C++ without error. However, when I run the above R code, RStudio gives me the following strange return in ans1$a2 and ans1$y:
$a1
[1] 1 2 3
$a2
[1] 2.121996e-314
$y
[1] 6 6 6
$size
[1] 3
When I run the same R code trice, the RStudio says there is a fatal error in R and closes my RStudio. I tried to use Window PC and created a toy.dll file and dyn.load("toy.dll") with the same error. Can someone help me figure out the problem for me? It seem the problem is not from C++ but is from RStudio. Thanks.