Hi All,

I tried my best to figure out how to deal with the freezing R console but
with no luck. I followed the instructions of calling R_ProcessEvents()
regularly but still couldn't work it out (the callings were removed from the
below C code).

I am using R-2.8.1 on Windows XP service pack 3. The Rtools is version 2.9.
I have the following C code:

void rx(int *n, int *m, int *rxmax,int *rxdate, int *refills,int *rxs) {
  int i,j,k, total;
  int cap[*n][*m];
  int rx[*n* *rxmax][*n];

  for (i=0;i<*n;i++)
    for (j=0;j<*m;j++)
   cap[i][j]=0;

  for (i=0;i<*n* *rxmax;i++) {
  rx[i][0]=*(rxdate+i);
     rx[i][1]=*(refills+i);
     }

  for (i=0;i<*n;i=i+1)
   for (j=*rxmax *i;j<(i+1) * *rxmax-1;j++)
        if (rx[j][0] > 0)
          for (k = rx[j][0]; k < rx[j][0] + rx[j][1]; k++){
          if (k<*m)
            cap[i][k]=1; }

  for (j=0;j<*m;j++)
    for (i=0,total=0;i<*m;i++) {
      total= total+cap[j][i];
      rxs[j]=total;
      }
}

And the following R code:

dyn.load("c:/temp/rxc.dll")
rx=matrix(c(1,5,11,5,21,5,0,0,
            1,10,21,10,0,0,0,0),nrow=8, byrow=T);
n=2
m=31
x=c(1:n)
rxmax= dim(rx)[[1]]/n
xx <- .C("rx",n=as.integer(n),m=as.integer(m),rxmax=as.integer(rxmax),
      rxdate = as.integer(rx[,1]),
      refills = as.integer(rx[,2]),rxs=as.integer(x))
xx$rxs


After I created the .dll file, I was able to load it into R and got the
result that I expected. But if I re-run the code for several times, the R
console will freeze.

Thanks in advance.

Xiangyang

        [[alternative HTML version deleted]]

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to