# [R] Yearly aggregates and matrices

mathijsdevaan mathijsdevaan at gmail.com
Wed Apr 20 15:32:46 CEST 2011

```Thanks for clarifying that.

Best

Gabor Grothendieck wrote:
>
> On Wed, Apr 20, 2011 at 5:49 AM, mathijsdevaan
> <mathijsdevaan at gmail.com> wrote:
>> As a follow up on this post, I am trying to slightly adjust the solution
>> kindly provided by Gabor. However, I am getting some results that I do
>> not
>> understand. Example:
>>
>> # devel version of zoo
>> install.packages("zoo", repos = "http://r-forge.r-project.org")
>> library(zoo)
>>
>> DF1 = data.frame(read.table(textConnection("    B  C  D  E  F  G
>> 8025  1995  0  4  1  2
>> 8025  1997  1  1  3  4
>> 8026  1995  0  7  0  0
>> 8026  1996  1  2  3  0
>> 8026  1997  1  2  3  1
>> 8026  1998  6  0  0  4
>> 8026  1999  3  7  0  3
>> 8027  1997  1  2  3  9
>> 8027  1998  1  2  3  1
>> 8027  1999  6  0  0  2
>> 8028  1999  3  7  0  0
>> 8029  1995  0  2  3  3
>> 8029  1998  1  2  3  2
>> 8029  1999  6  0  0  1"),head=TRUE,stringsAsFactors=FALSE))
>>
>> a <- read.zoo(DF1, split = 1, index = 2, FUN = identity)
>> sum.na <- function(x) if (any(!is.na(x))) sum(x, na.rm = TRUE) else NA
>> b <- rollapply(a, 3,  sum.na, align = "right", partial = TRUE)
>> newDF <- lapply(1:nrow(b), function(i)
>>       prop.table(na.omit(matrix(b[i,], nc = 4, byrow = TRUE,
>>               dimnames = list(unique(DF1\$B), names(DF1)[-1:-2]))), 1))
>> names(newDF) <- time(a)
>> c<-lapply(newDF, function(mat) tcrossprod(mat / sqrt(rowSums(mat^2))))
>>
>> Now I would like the elements e in c to be equal to 1-e. However,
>>
>> c<-lapply(newDF, function(mat) 1 - tcrossprod(mat /
>> sqrt(rowSums(mat^2))))
>>
>> gives a value  of 2.220446e-16 for as.data.frame(c['1999'])[2,2] instead
>> of
>> 0
>>
>> What am I doing wrong here? Thanks a lot!
>>
>
> See FAQ 7.31 at:
>
> http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-doesn_0027t-R-think-these-numbers-are-equal_003f
>
>
> --
> Statistics & Software Consulting
> GKX Group, GKX Associates Inc.
> tel: 1-877-GKX-GROUP
> email: ggrothendieck at gmail.com
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help