> lapply(lapply(Dat,My_Function),function(x)
> {if(names(Dat)[match.call()[[2]][[3]]]%in%
> "P") NULL else x})
match.call()[[2]][[3]], gack!
In lapply(X, FUN), FUN is applied to X[[i]], which has lost the names attribute
that X
may have had. X[i] retains a part of the names attribute (since it is a
sublist of X, not an element
of X). Hence FUN can look at the name associated with X[i] with code like the
following:
lapply(seq_along(X), FUN=function(i) { Xi <- X[i] ; names(Xi) })
E.g., to apply one sort of processing to elements named "P" and another sort to
those
not named "P" you can do:
> bases <- list(O="Oak Harbor",P="Pensicola",Q="Quonset Point")
> lapply(seq_along(bases), function(i){ base <- bases[i] ; if (names(base) !=
"P") paste0("(",base,")") else tolower(base) } )
[[1]]
[1] "(Oak Harbor)"
[[2]]
[1] "pensicola"
[[3]]
[1] "(Quonset Point)"
Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On
> Behalf
> Of arun
> Sent: Friday, December 14, 2012 12:11 PM
> To: Christofer Bogaso
> Cc: R help
> Subject: Re: [R] A question on list and lapply
>
> Hi,
>
> If you want the list element "P" to be present as NULL in the result
> you could use this:
> set.seed(51)
> lapply(lapply(Dat,My_Function),function(x)
> {if(names(Dat)[match.call()[[2]][[3]]]%in%
> "P") NULL else x})
> A.K.
>
>
>
>
> ----- Original Message -----
> From: Christofer Bogaso <[email protected]>
> To: [email protected]
> Cc:
> Sent: Friday, December 14, 2012 1:58 PM
> Subject: [R] A question on list and lapply
>
> Dear all, let say I have following list:
>
> Dat <- vector("list", length = 26)
> names(Dat) <- LETTERS
> My_Function <- function(x) return(rnorm(5))
> Dat1 <- lapply(Dat, My_Function)
>
>
> However I want to apply my function 'My_Function' for all elements of 'Dat'
> except the
> elements having 'names(Dat) == "P"'. Here I have specified the name "P" just
> for
> illustration however this will be some name specified by user.
>
> Is there any direct way to achieve this, using 'lapply'?
>
> Thanks for your help.
>
> ______________________________________________
> [email protected] 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.
>
> ______________________________________________
> [email protected] 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.
______________________________________________
[email protected] 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.