[Rd] eigen returns NAs from a real matrix
Martin Maechler
maechler at stat.math.ethz.ch
Mon Mar 19 14:12:55 CET 2007
>>>>> "Duncan" == Duncan Murdoch <murdoch at stats.uwo.ca>
>>>>> on Mon, 19 Mar 2007 09:01:39 -0400 writes:
Duncan> On 3/19/2007 6:48 AM, Martin Maechler wrote:
>>>>>>> "BDR" == Prof Brian Ripley <ripley at stats.ox.ac.uk>
>>>>>>> on Sun, 18 Mar 2007 06:51:58 +0000 (GMT) writes:
>>
BDR> On Sat, 17 Mar 2007, Spencer Graves wrote:
>> >> Hi, All:
>> >> Attached please find a symmetric, indefinite matrix for which
>> >> 'eigen(...)$vectors' included NAs:
>> >>> load("eigenBug.Rdata")
>> >>> sum(is.na(eigen(eigenBug)$vectors))
>> >> [1] 5670
>> >>> sessioninfo()
>> >> Error: could not find function "sessioninfo"
>> >>> sessionInfo()
>> >> R version 2.4.1 (2006-12-18)
>> >> i386-pc-mingw32
>> >>
>> >> locale:
>> >> LC_COLLATE=English_United States.1252;LC_CTYPE=English_United
>> >> States.1252;LC_MONETARY=English_United
>> >> States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252
>> >>
>> >> attached base packages:
>> >> [1] "stats" "graphics" "grDevices" "utils" "datasets" "methods" [7]
>> >> "base"
>> >> Using EISPACK does NOT return NAs: > sum(is.na(eigen(eigenBug,
>> >> EISPACK=TRUE)$vectors))
>> >> [1] 0
>> >>
>> >>
>> >> I traced the problem to the following line in 'eigen':
>> >> z <- if (!complex.x)
>> >> .Call("La_rs", x, only.values, PACKAGE = "base")
>> >>
>> >>
>> >> Comments?
>>
BDR> Nothing appeared as an attachment.
>>
>> it was a zip file which is not among the allowed ones
>> (.tar.gz / *.tgz would work).
>>
>> Spencer has also contacted me in private,
>> so you now can use something like :
>>
>> F <- tempfile()
>> download.file("ftp://stat.ethz.ch/U/maechler/R/eigenBug.Rdata", F)
>> load(F)
Duncan> This is unrelated to Spencer's problem, but this
Duncan> sequence failed for me.
Duncan> By default it will treat the file as a text file,
Duncan> and convert EOL markers for Windows. Adding
Duncan> "mode='wb'" to the download.file() call is necessary.
ok; Thank you, Duncan.
{For me, that's yet another reason why I think it would be ``nice''
if both load() and source() would work with general
connections the same way as read.table(), and I could just say
load("ftp://stat.ethz.ch/U/maechler/R/eigenBug.Rdata")
}
>> str(eigenBug)# tons of dinames; get rid of them:
>> M <- unname(eigenBug)
>>
>> sum(is.na(eigen(M)$vectors))
>> # 0 (for MM, on Linux); '5670' for Spencer
Duncan> I get the same as Spencer in 2.4.1, but zero in
Duncan> R-devel, in Windows.
ahh, that's good news.
Maybe Spencer could install a revcent version R-devel on his
Windows machine, and try the example?
Duncan> I haven't tried R-patched yet: there were network
Duncan> problems here this morning, and the build failed.
Duncan> Duncan Murdoch
>> sum(is.na(eigen(M, EISPACK=TRUE)$vectors))
>> # 0
>>
>> ## Guess about what kind of BLAS/Lapack I'm using :
>> file.info(list.files(R.home("lib"), full=TRUE))[,1:3]
>> ## size isdir mode
>> ## ....64-linux-inst/lib/libRblas.so 422558 FALSE 755
>> ## ....64-linux-inst/lib/libRlapack.so 3144596 FALSE 755
>>
>>
>> I.e. I don't get any NA's
>> which shows to me that the bug is most probably in the Lapack -
>> Version that Spencer's version of R is linked against.
>>
>> Martin Maechler, ETH Zurich
More information about the R-devel
mailing list