Thanks! You saved me a lot!


2013/3/10 arun <smartpink...@yahoo.com>

>
>
> Hi,
> For the first case:
> lst2<-lapply(x.list, calcnorm2, x.list)
>  lapply(lst2,function(x) do.call("c",x))
> #[[1]]
> #[1]  0.00000 31.75257
>
> #[[2]]
> #[1] 31.75257  0.00000
> A.K.
>
>
>
> For the second case:
>  lst1<-as.list(data.frame(t(apply(x,1,calcnorm2.const,x))))
>  names(lst1)<- NULL
>  lst1
> #[[1]]
> #[1]  0.00000 31.75257
>
> #[[2]]
> #[1] 31.75257  0.00000
>
>
>
>
> A.K.
> ----- Original Message -----
> From: ishi soichi <soichi...@gmail.com>
> To: r-help <r-help@r-project.org>
> Cc:
> Sent: Sunday, March 10, 2013 1:18 AM
> Subject: Re: [R] list + lapply insead of matrix + apply
>
> there is a typo.
>
> lapply(x.list, calcnorm, x.list)
>
> should be
>
> lapply(x.list, calcnorm2, x.list)
>
> sorry.
>
>
>
>
> 2013/3/10 ishi soichi <soichi...@gmail.com>
>
> > I need to develop a simple list manipulation. Although it seems easier to
> > do it in matrix form, but I need it in list form.
> >
> > I have a matrix
> >
> > x <- matrix(c(12.1, 3.44, 0.1, 3, 12, 33.1, 1.1, 23), nrow=2)
> >
> > for list form example, the conversion is
> >
> > x.list <- lapply(seq_len(nrow(x)), function(i) x[i,])
> >
> >
> > ### list version
> > calcnorm=function(a, b){
> >     diff <- mapply("-", a, b)
> >     diff2 <- mapply("*", diff, diff)
> >     sqrt.diff <-sqrt(sum(diff2))
> >     return(sqrt.diff)
> > }
> > calcnorm2=function(a,X){
> >     lapply(X, calcnorm, a)
> > }
> > lapply(x.list, calcnorm, x.list)
> >
> > [[1]]
> > [[1]][[1]]
> > [1] 0
> >
> > [[1]][[2]]
> > [1] 31.75257
> >
> >
> > [[2]]
> > [[2]][[1]]
> > [1] 31.75257
> >
> > [[2]][[2]]
> > [1] 0
> >
> >
> > ### matrix version
> > calcnorm.const=function(a,b){
> >     return(sqrt((a-b)%*%(a-b)))
> > }
> > calcnorm2.const=function(a,data){
> >     apply(data,1,calcnorm.const,a)
> > }
> > apply(x,1,calcnorm2.const,x)
> >
> >          [,1]     [,2]
> > [1,]  0.00000 31.75257
> > [2,] 31.75257  0.00000
> >
> > Ideally, for later purposes, the list form of the output should be
> > something like
> >
> > [[1]]
> > [1,]  0 31.75257
> > [[2]]
> > [2,] 31.75257  0
> >
> > I am getting confused here. Could anyone help me out for the right output
> > FORM?
> >
> > ishida
> >
>
>     [[alternative HTML version deleted]]
>
> ______________________________________________
> 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.
>
>

        [[alternative HTML version deleted]]

______________________________________________
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.

Reply via email to