Fuchs Ira wrote: > I was wondering why the following doesn't work: > > > a=c(1,2) > > names(a)=c("one","two") > > a > one two > 1 2 > > > > names(a[2]) > [1] "two" > > > > names(a[2])="too" > > names(a) > [1] "one" "two" > > a > one two > 1 2 > > I must not be understanding some basic concept here. > Why doesn't the 2nd name change to "too"?
because a[2] becomes a newly allocated vector once you make the assignment, and so the assignment does not affect a. however: names(a)[2] = 'too' will affect a the way you seem to wish. > > also unrelated: if I have two vectors and I want to combine them to > form a matrix ,is cbind (or rbind) the most direct way to do this? > > e.g. > > x=c(1,2,3) > y=c(3,4,5) > z=rbind(x,y) > > alternatively: is there a way to make a matrix with dim=2,3 and then > to replace the 2nd row with y > > something like this (which doesn't work but perhaps there is another > way to do the equivalent?) > > attr(x,"dim")=c(2,3) > x[2,]=y you can do this: z = matrix(c(x, y), nrow=2, ncol=3, byrow=TRUE) but rbind seems much simpler. vQ ______________________________________________ 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.