On 27/01/2012 2:46 PM, Jonathan Lisic wrote:
Hi, I'm sure this is a fairly simple problem, but I can't seem to find any
specific information in the documentation as to what is going on.  I am
writing a simple nearest neighbor program that takes in a set of of points
on a plane and returns the neighbors of those points, for a fixed number of
neighbors.  However, the returned integer array that is allocated in R
seems to occasionally return incorrect results.

I thought this would be because of GC, but I thought this was only for
SEXPs, or at least this is the impression I got from reading the
documentation.  So is there some obvious reason why my results seem to get
mangled by this call?  I have checked my program through several thousand
loops in C, and always get the same results, so I assume that this is
something I'm doing wrong in R.

You don't show us what your incorrect results are. The most likely causes are on the C side, and besides just doing the wrong calculation, I'd be suspicious of out of bounds writes to arrays. Do you treat any of the other arguments besides the 5th one as arrays? Are you sure the length of array passed in is long enough? Do you have local allocations of arrays, and are they long enough? Do your type declarations in C match the four double* declarations followed by six int* declarations implied by your .C call?

Duncan Murdoch

Here is the code for my .C call.  I could post the C code if someone thinks
it's important, but I'm just changing the values of integer array specified
in R.

r.result<-
.C("evalPoly",
  as.double(c.polygonX),
  as.double(c.polygonY),
  as.double(c.neighborX),
  as.double(c.neighborY),
  integer(c.numberOfNeighbors*c.height*c.length),
  as.integer(c.polygonLength),
  as.integer(c.neighborLength),
  as.integer(c.numberOfNeighbors),
  as.integer(c.length),
  as.integer(c.height),
  DUP=TRUE
)[[5]]


Cheers,

Jonathan

        [[alternative HTML version deleted]]

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

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

Reply via email to