I'm working on a shared library of C functions for use with R, and I want to create a matrix in R and pass it to the C routines. I know R computes and supposedly stores numerics in double precision, but when I create a matrix of random numerics using rnorm(), the values are displayed in single precision, and also exported in single precision when I pass them out to my C routines. An example is below:> a <- matrix(rnorm(16, mean=10, sd=4), nrow=4) > a[,1] [,2] [,3] [,4] [1,] 14.907606 17.572872 19.708977 9.809943 [2,] 9.322041 13.624452 7.745254 7.596176 [3,] 10.642408 6.151546 9.937434 6.913875 [4,] 14.617647 5.577073 8.217559 12.115465> storage.mode(a)[1] "double" Does anyone know if there is a way to change the display or storage settings so that the values will be displayed to their full precision? Or does rnorm only produce values to single precision? Any assistance would be greatly appreciated. Thanks, Jeff Delmerico -- View this message in context: http://www.nabble.com/Displaying-numerics-to-full-double-precision-tf4950807.html#a14175334 Sent from the R help mailing list archive at Nabble.com.
Jeff Delmerico wrote:> > I'm working on a shared library of C functions for use with R, and I want > to create a matrix in R and pass it to the C routines. I know R computes > and supposedly stores numerics in double precision, but when I create a > matrix of random numerics using rnorm(), the values are displayed in > single precision, and also exported in single precision when I pass them > out to my C routines. An example is below: > >> a <- matrix(rnorm(16, mean=10, sd=4), nrow=4) >> a > [,1] [,2] [,3] [,4] > [1,] 14.907606 17.572872 19.708977 9.809943 > [2,] 9.322041 13.624452 7.745254 7.596176 > [3,] 10.642408 6.151546 9.937434 6.913875 > [4,] 14.617647 5.577073 8.217559 12.115465 >> storage.mode(a) > [1] "double" > > Does anyone know if there is a way to change the display or storage > settings so that the values will be displayed to their full precision? > Or does rnorm only produce values to single precision? > > Any assistance would be greatly appreciated. > > Thanks, > Jeff Delmerico >options("digits") # 7 options(digits=x) I may be mistaken, but I think the values are indeed exported as double precision -- the issue here is just a display setting. Ben Bolker -- View this message in context: http://www.nabble.com/Displaying-numerics-to-full-double-precision-tf4950807.html#a14178707 Sent from the R help mailing list archive at Nabble.com.
On 12/5/07, Jeff Delmerico <jeffdelmerico at yahoo.com> wrote:> Does anyone know if there is a way to change the display or storage settings > so that the values will be displayed to their full precision? Or does > rnorm only produce values to single precision? > > Any assistance would be greatly appreciated.As far as I know (beware, I'm a novice), internally R stores to and uses full precision. The display of the data, however, is controlled by "digits". You'd need to put, say, options(digits=7) in your Rprofile.site (if it doesn't exist, creat it in the R etc/ folder). You might also be interested by "scipen". Check ?options. Regards, Liviu