>>>>> Michel <michelgo...@free.fr> >>>>> on Tue, 24 Sep 2013 12:22:10 +0200 writes:
> Hello, Thanks for your answer The file does not contains > numbers in high precision but all the calculation applied > to these data will be > In attachment a text file containing some lines And her > few values: > 11111.0054014388224326026488598,-68239.4114845811819662912967033,10053.1824584878233990181684021 > 3.05363891777017837760380136736,-1.40443175474415104684797195311,1.36766960877453817890022497172 (two lines, typically split by mail writers/readers) Aha! But these actually *ARE* of 'high precision', i.e. you cannot store them as usual double precision numbers in full accuracy. So, I've prepared the following -- 100% reproducible -- script to show you how to get such numbers into an Rmpfr matrix : ## MM: Reproducible example set.seed(17); x <- mpfr(matrix(rnorm(28), 7, 4), precBits=128) x <- x^2 mfile <- tempfile() write.table(array(format(x), dim=dim(x)), file = mfile, row.names=FALSE, col.names=FALSE, sep=",") ## to check: writeLines(readLines(mfile) [1:2]) ## Now, let's assume mfile contains the "high precision" matrix we want to get as ## mpfrMatrix : ## 1) Assume you know the number of columns, then this is fastest : m.ncol <- 4 chmat <- matrix(scan(mfile, "", sep=","), ncol = m.ncol ) ## 2) Nothing is known, ... ok, why not make the detour via read.table(): chmat <- as.matrix(read.table(mfile, colClasses="character", sep=",")) ## in both cases: require(Rmpfr)# the package M <- mpfr(chmat)#-> determines precision *from* the input, here 133 .. 143 bits ## or set the precision yourself, high enough: M <- mpfr(chmat, precBits = 144) ## and e.g. this works: crossprod(M) ## == M'M ------- Hoping this helps, Martin ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.