[R] Questions on dividing lists and tapply

Henrique Dallazuanna wwwhsd at gmail.com
Wed Mar 16 02:16:36 CET 2011


Try this:

mapply('/', l1, l2, SIMPLIFY = FALSE)

and

tapply(1:5, lapply(indxLi, as.numeric), sum)


On Tue, Mar 15, 2011 at 6:06 PM, Rohit Pandey <rohitpandey576 at gmail.com> wrote:
>
> Hello R community,
>
> I have two questions about using R.
>
> The first is about dividing each element of a list with another similar
> sized list. So, if the first list has two elements and so does the second,
> then the result should also be a list with two elements.
>
> For example, the inputs are:
>
> list(matrix(1:6,ncol=2),matrix(1:6,ncol=2))->l1
> l2<-list(1:3,2)
>
> I want to get a list, l3 with the first element being l1[[1]]/l2[[1]] and
> the second one, l1[[2]]/l2[[2]].
>
> I had asked a similar question before and the solution using mapply works
> well for a list and a vector, but for two lists, it will return an array
> (and not a list).
>
> My second question is about the tapply function.
>
> tapply(1:5,list(c(1,1,2,2,3),c(1,2,1,1,3)),sum)
> will give me:
>
>   1    2    3
> 1  1   2  NA
> 2  7  NA  NA
> 3 NA  NA   5
> The index here is a list: list(c(1,1,2,2,3),c(1,2,1,1,3)).
>
> However, if I get the same index list through one of the other apply
> functions (like by) for example,
> indxLi<-by(rbind(c(1,1,2,2,3),c(1,2,1,1,3)),1:2,function(x){return(x)})
> then the tapply no longer works with this list.
> tapply(1:5,indxLi,sum) gives me the error:
>
> Error in sort.list(y) : 'x' must be atomic for 'sort.list'
> Have you called 'sort' on a list?
>
> Is there a way to use the above list in the tapply function?
>
> Many thanks in advance,
>
> --
> Thanks,
> Rohit
> Mob: 91 9819926213
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> 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.



--
Henrique Dallazuanna
Curitiba-Paraná-Brasil
25° 25' 40" S 49° 16' 22" O



More information about the R-help mailing list