> -----Original Message-----
> From: r-help-boun...@r-project.org 
> [mailto:r-help-boun...@r-project.org] On Behalf Of Peng Yu
> Sent: Friday, December 11, 2009 8:44 AM
> To: r-h...@stat.math.ethz.ch
> Subject: [R] Why a list of NULL's are reduced to NULL?
> 
> The following examples are confusing to me. It is OK, to assigned NULL
> to one element in a list. The result is still a list. However, a list
> of NULL's are reduced to NULL. I don't understand how this conversion
> occurs. Could somebody let me know what is going on?

The "simplification" algorithm for reformatting
the output of apply and sapply is handy in the
common case when you know that FUN will return
the same sort of thing each time it it called.
The algorithm is not very useful when FUN may return
objects of various classes or lengths.  sapply has
a simplify=FALSE argument to avoid the simplification
(so it acts like lapply) but apply doesn't.

I suggest you either change your function to always
return one class and length of object or use lapply()
or sapply(simplify=FALSE,...) when you must use a function
with variable output type.  E.g., instead of
   apply(X, 1, function(row){f(row)})
use
   lapply(seq_len(nrow(X)), function(rowIndex){f(X[rowIndex,])})
or
   lapply(split(X, row(X)), function(row){f(row)})

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com  

> 
> > X=matrix(1:8, nr=4)
> > apply(X,1, function(x) {if(x[[1]]==3){NULL}else{x[[1]]}})
> [[1]]
> [1] 1
> 
> [[2]]
> [1] 2
> 
> [[3]]
> NULL
> 
> [[4]]
> [1] 4
> 
> > apply(X,1, function(x) {NULL})
> NULL
> 
> ______________________________________________
> 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.
> 

______________________________________________
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