[R] Warning message: numerical expression has 1000 elements: only the first used
R. Michael Weylandt
michael.weylandt at gmail.com
Thu May 31 08:18:06 CEST 2012
Ozgur -- No, this is not what the OP seems to be asking for (and it's
bad code anyways -- I've mentioned the importance of pre-allocation to
you before):
OP, if I understand you, you are looking for a cumsum() operation:
something like:
t <- rbinom(1000, 1, 0.5)
t[t==0] <- (-1)
cumsum(t)
Alternatively, noting that rbinom(, 1, ) gives only values of 0 and
one, it's even faster to do:
cumsum(2*rbinom(1000,1,0.5)-1)
e.g.,
set.seed(1)
t <- rbinom(1000, 1, 0.5)
t[t==0] <- (-1)
a <- cumsum(t)
set.seed(1)
b <- cumsum(2*rbinom(1000,1,0.5)-1)
identical(a,b) # TRUE
Best,
Michael
On Thu, May 31, 2012 at 2:08 AM, Özgür Asar <oasar at metu.edu.tr> wrote:
> Hi,
>
> Your mistake seems to be in
>
> sum(v[1:x])
>
> You create "x" as a vector but your treat it as a single number.
>
> v[1:x] expects "x" to be a single number and only considers its first
> element which is 1.
>
> If I understand your query correctly, the following might handle your
> problem:
>
> sum.vec <-NULL
> for (x in 1:1000){
> t <- rbinom(1000, 1, 0.5)
> v <- replace(t,t==0,-1)
> sum.vec<-c(sum.vec,sum(v[1:x]))
> }
>
> Best
> Ozgur
>
> -----
> ************************************
> Ozgur ASAR
>
> Research Assistant
> Middle East Technical University
> Department of Statistics
> 06531, Ankara Turkey
> Ph: 90-312-2105309
> http://www.stat.metu.edu.tr/people/assistants/ozgur/
> --
> View this message in context: http://r.789695.n4.nabble.com/Warning-message-numerical-expression-has-1000-elements-only-the-first-used-tp4631813p4631903.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> 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