[R] Warning: matrix by vector division

jim holtman jholtman at gmail.com
Fri Mar 7 23:47:05 CET 2008


R is working exactly as documented.  If you look at how the matrix is
stored  (column-wise) and then what you are dividing by, you will see
that it is doing what you asked (when recycling values):

> as.vector(a)
[1] 0 1 1 1 1 1
> as.vector(a)/c(2,3)
[1] 0.0000000 0.3333333 0.5000000 0.3333333 0.5000000 0.3333333
>


On Fri, Mar 7, 2008 at 5:32 PM, Alexey Shipunov <dactylorhiza at gmail.com> wrote:
> Dear list,
>
> I just made a very simple mistake, but it was hard to spot. And I
> think that I should warn other people, because it is probably so
> simple to make...
>
> === R code  ===
>
> # Let us create a matrix:
> (a <- cbind(c(0,1,1), rep(1,3)))
>
> #      [,1] [,2]
> # [1,]    0    1
> # [2,]    1    1
> # [3,]    1    1
>
> # That is a MISTAKE:
> a/colSums(a)
>
> #           [,1]      [,2]
> # [1,] 0.0000000 0.3333333
> # [2,] 0.3333333 0.5000000
> # [3,] 0.5000000 0.3333333
> # I just wonder if some R warning should be issued here?
>
> # That is what I actually needed (column-wise frequencies):
> t(t(a)/colSums(a))
>
> #      [,1]      [,2]
> # [1,]  0.0 0.3333333
> # [2,]  0.5 0.3333333
> # [3,]  0.5 0.3333333
>
> === end of R code ===
>
> With best wishes and regards,
> Alexey Shipunov
>
> ______________________________________________
> R-help at 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.
>



-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem you are trying to solve?



More information about the R-help mailing list