jim holtman wrote: > Lets take a look at your solution: > >> mat1 <- matrix(0, nrow=10, ncol=3) >> dimnames(mat1) <- list(paste('row', 1:10, sep=''), LETTERS[1:3]) >> mat2 <- matrix(1:3, ncol=1, dimnames=list(c('row3', 'row7', 'row5'), "B")) >> mat2 > B > row3 1 > row7 2 > row5 3 >> mat1[rownames(mat2)%in%rownames(mat1),"B"]=mat2[,"B"] > Error in mat1[rownames(mat2) %in% rownames(mat1), "B"] = mat2[, "B"] : > number of items to replace is not a multiple of replacement length >> rownames(mat2)%in%rownames(mat1) > [1] TRUE TRUE TRUE >> mat2[,"B"] > row3 row7 row5 > 1 2 3 > > I got an error statement using your statement with %in%. This is > because it produces a vector a 3 TRUE values are you can see above. > With recycling to will the matrix, you get the error message. What > you want to provide is the index value of the rows to replace in. > What you would need in this case is the following statement: > > mat1[match(rownames(mat2), rownames(mat1)),"B"]=mat2[,"B"] > > Now your solution would have to be changed everytime you wanted a > different column replaced. My solution determined which of the column > names matched in the objects. > > In R, there are a number of ways of doing things. As to which is > 'better', it all depends. In most cases it is probably a matter of > 'style' or what a person is used to. "Better" does come into play > when you are taking about performance and there might be a factor of > 10X, 100X or 1000X depending on how you used some statements. I > happen to like to try to break things down into some simple steps so > if I have to go back later, I think I might be able to understand it > again. > > If you are coming from a C/Java background, then one of hard things to > get your mind around it to think in terms of 'vectorized' operations > and also the difference in some of the ways that you create/manipulate > data structures in R vs. some other languages. > > HTH >
Thankyou for you explanation and time - very helpful. Best wishes, Martin ______________________________________________ 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.