[R] Is it possible to remove this loop? [SEC=UNCLASSIFIED]
Pascal Oettli
kridox at ymail.com
Wed Jul 4 06:07:16 CEST 2012
Le 04/07/2012 12:43, Peter Ehlers a écrit :
> On 2012-07-03 17:23, Jin.Li at ga.gov.au wrote:
>> Thank you all for providing various alternatives. They are all pretty
>> fast. Great help! Based on a test of a dataset with 800,000 rows, the
>> time used varies from 0.04 to 11.56 s. The champion is:
>>> a1$h2 <- 0
>>> a1$h2[a1$h1=="H"] <- 1
>
> Interesting. My testing shows that Petr's solution is about
> twice as fast. Not that it matters much - the time is pretty
> small in any case.
>
> a0 <- data.frame(h1 = sample(c("H","J","K"), 1e7, replace = TRUE),
> stringsAsFactors = FALSE)
> a1 <- a0
> system.time({a1$h2 <- 0; a1$h2[a1$h1 == "H"] <- 1})
> # user system elapsed
> # 1.47 0.48 1.96
> a11 <- a1
>
> a1 <- a0
> system.time(a1$h2 <- (a1$h1 == "H") * 1)
> # user system elapsed
> # 0.37 0.17 0.56
> a12 <- a1
> all.equal(a11,a12)
> #[1] TRUE
>
> Peter Ehlers
>
I got the same result. Petr's solution is the fastest. Good to know it.
Pascal Oettli
>> Regards,
>> Jin
>>
>> Geoscience Australia Disclaimer: This e-mail (and files transmitted
>> with it) is intended only for the person or entity to which it is
>> addressed. If you are not the intended recipient, then you have
>> received this e-mail by mistake and any use, dissemination,
>> forwarding, printing or copying of this e-mail and its file
>> attachments is prohibited. The security of emails transmitted cannot
>> be guaranteed; by forwarding or replying to this email, you
>> acknowledge and accept these risks.
>
> ______________________________________________
> R-help at 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.
>
More information about the R-help
mailing list