[R] replacing values in a vector

Dimitris Rizopoulos d.rizopoulos at erasmusmc.nl
Tue Aug 17 14:40:13 CEST 2010


try this:

vec <- c(3,2,6,4,7)

n <- length(vec)
for(i in seq_along(vec)){
     r <- numeric(n)
     r[i] <- vec[i]
     assign(paste("vec.", letters[i], sep = ""), r)
}


I hope it helps.

Best,
Dimitris


On 8/17/2010 12:57 PM, Karen Kotschy wrote:
> Dear helpRs
>
> Does anyone have an elegant way of doing the following:
>
> For a given numeric vector, e.g. vec<- c(3,2,6,4,7)
>
> Create a series of vectors where all but 1 of the values are replaced by
> 0's,  e.g.
>
> vec.a<- c(3,0,0,0,0)
> vec.b<- c(0,2,0,0,0)
> vec.c<- c(0,0,6,0,0)
> vec.d<- c(0,0,0,4,0)
> vec.e<- c(0,0,0,0,7)
>
> I have looked at `replace', but can't think of a way of making it produce
> the 5 lines above without a for loop.
>
> I would also like to assign the names automatically. I can create them
> easily using paste, but how does one get R to treat the resulting
> character strings as object names to which values can be assigned?
>
> Thanks!
> Karen
>
> ---
> Karen Kotschy
> Centre for Water in the Environment
> University of the Witwatersrand, Johannesburg, South Africa
>
>

-- 
Dimitris Rizopoulos
Assistant Professor
Department of Biostatistics
Erasmus University Medical Center

Address: PO Box 2040, 3000 CA Rotterdam, the Netherlands
Tel: +31/(0)10/7043478
Fax: +31/(0)10/7043014



More information about the R-help mailing list