> On 8 Sep 2017, at 14:03 , peter dalgaard <pdalgd at gmail.com> wrote: > > x <- scan("~/Downloads/digits.txt") > x <- x[-seq(1,220000,11)]...and, come to think of it, if you really want the 1000000 random digits: xx <- c(outer(x,10^(0:4), "%/%")) %% 10 -- Peter Dalgaard, Professor, Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Office: A 4.23 Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com
Martin Møller Skarbiniks Pedersen
2017-Sep-08 13:51 UTC
[R] Optimize code to read text-file with digits
On 8 September 2017 at 14:37, peter dalgaard <pdalgd at gmail.com> wrote:> > > > On 8 Sep 2017, at 14:03 , peter dalgaard <pdalgd at gmail.com> wrote: > > > > x <- scan("~/Downloads/digits.txt") > > x <- x[-seq(1,220000,11)] > > ...and, come to think of it, if you really want the 1000000 random digits: > > xx <- c(outer(x,10^(0:4), "%/%")) %% 10 >Hi Peter, Thanks a lot for the answers. I can see that I need to read about outer(). However I get a different result than expected. R> x <- scan("digits.txt") Read 220000 items R> head(x) [1] 0 10097 32533 76520 13586 34673 R> x <- x[-seq(1,220000,11)] R> head(x) [1] 10097 32533 76520 13586 34673 54876 R> head(c(outer(x,10^(0:4), "%/%")) %% 10, 10) # [1] 7 3 0 6 3 6 9 7 2 5 Regards Martin [[alternative HTML version deleted]]
> On 8 Sep 2017, at 15:51 , Martin M?ller Skarbiniks Pedersen <traxplayer at gmail.com> wrote: > > On 8 September 2017 at 14:37, peter dalgaard <pdalgd at gmail.com> wrote: >> >> >>> On 8 Sep 2017, at 14:03 , peter dalgaard <pdalgd at gmail.com> wrote: >>> >>> x <- scan("~/Downloads/digits.txt") >>> x <- x[-seq(1,220000,11)] >> >> ...and, come to think of it, if you really want the 1000000 random digits: >> >> xx <- c(outer(x,10^(0:4), "%/%")) %% 10 >> > > Hi Peter, > Thanks a lot for the answers. I can see that I need to read about outer(). > However I get a different result than expected. > > R> x <- scan("digits.txt") > Read 220000 items > > R> head(x) > [1] 0 10097 32533 76520 13586 34673 > > R> x <- x[-seq(1,220000,11)] > R> head(x) > [1] 10097 32533 76520 13586 34673 54876 > > R> head(c(outer(x,10^(0:4), "%/%")) %% 10, 10) # > [1] 7 3 0 6 3 6 9 7 2 5 >Ah, right. You do get all the digits, but in the order of the last digit of each 5 digit number, then all the penultimate digits, etc. To get digits in the right order, try> xx <- c(t(outer(x,10^(4:0), "%/%"))) %% 10 > head(xx, 100)[1] 1 0 0 9 7 3 2 5 3 3 7 6 5 2 0 1 3 5 8 6 3 4 6 7 3 5 4 8 7 6 8 0 9 5 [35] 9 0 9 1 1 7 3 9 2 9 2 7 4 9 4 5 3 7 5 4 2 0 4 8 0 5 6 4 8 9 4 7 4 2 [69] 9 6 2 4 8 0 5 2 4 0 3 7 2 0 6 3 6 1 0 4 0 2 0 0 8 2 2 9 1 6 6 5 I.e., reverse the order of digit generation and transpose the matrix that outer() creates (because matrices are column-major).> Regards > Martin > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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.-- Peter Dalgaard, Professor, Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark Phone: (+45)38153501 Office: A 4.23 Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com