The manual seems to suggest, with the SIMPLIFY = TRUE default option,
Vectorize would conjure a vector if possible.
Quote:
SIMPLIFY: logical or character string; attempt to reduce the result to
a vector, matrix or higher dimensional array; see the
‘simplify’ argument of ‘sapply’.
I assume, if each run of the function results a vector of the same type,
the result should be a vector as well; there is a need of list only when
data are of different type.
Or, given vectors of the same type, conjure vectors of the same type.
But it doesn't work that way -- see below -- so what's the magic inside?
REPRODUCE:
First, to make sure each run of the function always return vector of the
same time:
for (datafile in list.files(full.names=TRUE,"16b"))
print(mode(list.files(full.names=TRUE,datafile)))
[1] "character"
[1] "character"
[1] "character"
[1] "character"
[1] "character"
[1] "character"
[1] "character"
[1] "character"
[1] "character"
[1] "character"
[1] "character"
Then, vectorize it:
datafiles <- c(Vectorize(list.files, "path")(full.names=TRUE,path =
list.files(base_dir,full.names=TRUE)))
mode(datafiles)
[1] "list"
The same happened with sapply, which should generate list only if a vector
is impossible -- it generated a list when every result is a vector:
mode(sapply(list.files(base_dir,full.names=TRUE), list.files))
[1] "list"
______________________________________________
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.