Le vendredi 08 mars 2013 à 09:29 +0100, Pierrick Bruneau a écrit : > Hello everyone, > > Considering the following code sample : > > ---- > indexes <- function(vec) { > vec <- which(vec==TRUE) > return(vec) > } This is essentially which(), what did you write such a convoluted function to get the same result?
> mat <- matrix(FALSE, nrow=10, ncol=10) > mat[1,3] <- mat[3,1] <- TRUE > ---- > > Issuing apply(mat, 1, indexes) returns a 10-cell list, as expected. > Now if I do: > > ---- > mat[1,3] <- mat[3,1] <- FALSE > apply(mat, 1, indexes) > ---- > > I would expect a 10-cell list with integer(0) in each cell - instead I get > integer(0), which wrecks my further process. >From ?apply: If each call to ‘FUN’ returns a vector of length ‘n’, then ‘apply’ returns an array of dimension ‘c(n, dim(X)[MARGIN])’ if ‘n > 1’. If ‘n’ equals ‘1’, ‘apply’ returns a vector if ‘MARGIN’ has length 1 and an array of dimension ‘dim(X)[MARGIN]’ otherwise. If ‘n’ is ‘0’, the result has length 0 but not necessarily the ‘correct’ dimension. Note especially the last sentence. > Is there a simple way to get the result I expect (and the only consistent > one, IMHO) ? One of the interests of apply() is that it combines the return values from all function calls into a convenient form, but this can indeed be a problem if you cannot know in advance what this form will be. If you need a list in all cases, then just call lapply(): lapply(seq(nrow(mat)), function(i) which(mat[i,])) Regards > Thanks by advance for your help, > > Pierrick Bruneau > http://www.bruneau44.com > > [[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. ______________________________________________ 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.