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

______________________________________________
R-help@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.

Reply via email to