On Dec 23, 2009, at 9:46 PM, Francesco Napolitano wrote:
Hi all,
I'm trying to learn R after years of Matlab's experience. Here is an
issue I couldn't solve today.
Consider the following piece of code (written by memory):
for(i in 1:n){
submat <- data[1:i,]
C <- colSums(submat)
}
In R the loop is not necessary, even confusing as you are demonstrating:
> mat <- matrix(rnorm(100), nrow=10) # 10 x 10
> colSums(mat[1:5, ]) # sums of 1st 5 rows
[1] 3.33331735 0.86672248 -3.10971483 1.23620455 -0.31887421
-0.50544837
[7] 3.13636155 0.02175862 -2.18816961 -1.31760196
The problem is that at the first iteration, data[1:1,] reduces to a
vector and colSums returns an error. This sounds really strange to me
because a sum-over-columns operation should have no problem working
with
columns of length 1. Matlab's "sum()" works just fine in such case.
The error says that I need an at least 2D array. So I try using
matrix(data[1:i,]). Unfortunately this returns a column instead of a
row. So I could do t(matrix(data[1:i,])), but this would transpose the
also the sub-matrices from the 2nd iteration on. I could fix
everything
with some "if" but it would be really terrible code :-/.
I'm sure I'm missing something because my neurons stick with Matlab
behaviour. Can you help me to understand what's wrong with my
reasoning?
Thank you very much,
Francesco.
______________________________________________
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.
David Winsemius, MD
Heritage Laboratories
West Hartford, CT
______________________________________________
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.