I should add to this that I'm running on Scientific Linux 6. I later noticed that the bug only seems to occur when I run the code from Rstudio, and not if I use the terminal directly, so this may be the key to the problem.
Robin On 20 May 2013 16:12, Robin Evans <rj...@cam.ac.uk> wrote: > Hello, > > I've run into a problem which is both maddening and rather hard to > replicate, therefore I wondered if someone might know of a plausible > explanation for it. I couldn't find anything in the archives, though > maybe I'm searching for the wrong thing. > > I'm calling some C code using .C, and get the vector I'm interested in > back as the 7th location in the returned list. However I find that if > I try to inspect the contents of this entry in the list in some ways, > I get one answer, and if I look at it in others I get a different > answer. It's quite possible that there's something wrong with the C > code, but this doesn't seem to explain why this phenomenon would occur > in R. > > The problem does not always occur - I have to run the code a few times > and then call the console when it does, but the commands below show > what can happen when it does. I apologise for not being able to get a > cleaner example. Full code and output is below, but here is a > stylised version: > > The following all give one answer (which is the wrong answer as far as > I'm concerned) : > * printing the whole list : > .C(...) # and looking at the 7th entry > * applying c() to the 7th element of the list > c(.C(...)[[7]]) > * assigning the 7th element to a vector: > x = .C(...)[[7]]; > x > > these give a different answer (which is the answer I would hope the C > code returns): > * using dput on the 7th entry: > dput(.C(...)[[7]]) > * applying c() and then dput() > dput(c(.C(...)[[7]])) > * just printing the 7th entry of the list > .C(...)[[7]] > > The answers are consistent in the sense that I always get the same > answers from running the same command in the console. I have tried > inspecting the returned objects to see if the objects are somehow of a > different class than I expect, or are just being printed oddly, but > have not found anything untoward. > > Any suggestions would be much appreciated! > > Regards, > > Robin > > > # THESE COMMANDS GIVE ONE ANSWER > # [the correct answer always begins with 1, the incorrect with -1] > > > .C("oneMargin", c(1L,1L,1L,1L,1L), c(1L,1L,1L,1L,1L), 1L, > c(2L,2L,2L,2L,2L), 5L, ptr1, ptr2)[[7]] > [1] 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 > -1 1 1 -1 -1 1 -1 1 1 -1 > > > dput(.C("oneMargin", c(1L,1L,1L,1L,1L), c(1L,1L,1L,1L,1L), 1L, > c(2L,2L,2L,2L,2L), 5L, ptr1, ptr2)[[7]]) > c(1L, -1L, -1L, 1L, -1L, 1L, 1L, -1L, -1L, 1L, 1L, -1L, 1L, -1L, > -1L, 1L, -1L, 1L, 1L, -1L, 1L, -1L, -1L, 1L, 1L, -1L, -1L, 1L, > -1L, 1L, 1L, -1L) > > > x=dput(c(.C("oneMargin", c(1L,1L,1L,1L,1L), c(1L,1L,1L,1L,1L), 1L, > c(2L,2L,2L,2L,2L), 5L, ptr1, ptr2)[[7]])) > c(1L, -1L, -1L, 1L, -1L, 1L, 1L, -1L, -1L, 1L, 1L, -1L, 1L, -1L, > -1L, 1L, -1L, 1L, 1L, -1L, 1L, -1L, -1L, 1L, 1L, -1L, -1L, 1L, > -1L, 1L, 1L, -1L) > > x > [1] 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 > -1 1 1 -1 -1 1 -1 1 1 -1 > > # THESE ALL GIVE A DIFFERENT ONE! > > > .C("oneMargin", c(1L,1L,1L,1L,1L), c(1L,1L,1L,1L,1L), 1L, > c(2L,2L,2L,2L,2L), 5L, ptr1, ptr2) > > # (OTHER ELEMENTS OF LIST REMOVED) > [[7]] > [1] -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 > 1 1 -1 -1 1 1 1 1 -1 -1 > > > c(.C("oneMargin", c(1L,1L,1L,1L,1L), c(1L,1L,1L,1L,1L), 1L, > c(2L,2L,2L,2L,2L), 5L, ptr1, ptr2)[[7]]) > [1] -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 > 1 1 -1 -1 1 1 1 1 -1 -1 > > x = .C("oneMargin", c(1L,1L,1L,1L,1L), c(1L,1L,1L,1L,1L), 1L, > c(2L,2L,2L,2L,2L), 5L, ptr1, ptr2)[[7]] > > x > [1] -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 > 1 1 -1 -1 1 1 1 1 -1 -1 > > > -- > Robin Evans > Statistical Laboratory > University of Cambridge > blog: itsastatlife.blogspot.com > web: www.statslab.cam.ac.uk/~rje42 > > Causal Inference Workshop July 15th: > http://www.statslab.cam.ac.uk/~rje42/uai13/main.htm > -- Robin Evans Statistical Laboratory University of Cambridge blog: itsastatlife.blogspot.com web: www.statslab.cam.ac.uk/~rje42 <http://www.stat.washington.edu/~rje42> Causal Inference Workshop July 15th: http://www.statslab.cam.ac.uk/~rje42/uai13/main.htm [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel