[R] Loop removal possible?
Martyn Plummer
plummer at iarc.fr
Mon Aug 21 15:06:38 CEST 2000
I think this will work:
hilf.w <- function(w){
y <- 0:sum(w)
z <- y*(y+1)/2
indices <- cumsum(c(1,w))
diff(z[indices])
}
Martyn
On 21-Aug-00 Jan Goebel wrote:
> Dear all,
>
> may be somebody have ideas to my following problem:
>
> I have to multiplicate each element of a vector with his position
> in the sorted vector. This isn't a problem ;-)
> But now i have a weighting vector with the weight of each observation,
> and my problem starts. A little example (due to my bad english) maybe
> helps to understand:
>
> x<-c(10,40,50,100) # income vector for instance
> w<-c(2,1,3,2) # the weight for each observation in x with the same
> length
>
> simple is without the weighting
> x * (1:length(x))
>
> with weighting the expanded x vector looks like
> "position" x[i]
> 1 10
> 2 10
> 3 40
> 4 50
> 5 50
> 6 50
> 7 100
> 8 100
>
> To avoid expanding (memory and time consuming) i want to calculate
>
> (1+2)*10
> 3 *40
> (4+5+6)*50
> (7+8)*100
>
> My solution looks like:
>
> hilf.w <- function(w) {
> k <- rep(0,length(w))
> e <- cumsum(w) # the end position
> a <- e-(w-1) # the beginning position
> for (i in 1:length(w)) {# <<- this loop i want to remove ??
> k[i] <- sum(a[i]:e[i])
> }
> return(k)
> }
>
> for the example the function calculate:
>
>> hilf.w(w)
> [1] 3 3 15 15
>
> Thanks a lot in advance for any suggestions,
>
> Jan Goebel (jgoebel at diw.de)
> DIW Berlin
> SOEP
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list