[R] Optimize code to read text-file with digits
peter dalgaard
pdalgd at gmail.com
Fri Sep 8 16:12:21 CEST 2017
> 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
More information about the R-help
mailing list