Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does function c() accept an undocumented argument?

The documentation for the base function c() shows its default arguments as

c(..., recursive = FALSE)

Now, if we define

lst <- list(x = 1:5, y = 6:10)

and then combine the list with

c(lst, recursive = TRUE)
# x1 x2 x3 x4 x5 y1 y2 y3 y4 y5 
#  1  2  3  4  5  6  7  8  9 10 

the list is collapsed, and the names are kept.

But we can also use another, undocumented argument, use.names, to remove the names.

c(lst, recursive = TRUE, use.names = FALSE)
# [1]  1  2  3  4  5  6  7  8  9 10

Why isn't use.names documented as one of the arguments of c() ?

like image 886
Rich Scriven Avatar asked Jul 18 '14 00:07

Rich Scriven


2 Answers

I think that it is due to the recursive=TRUE which I believe must use the same code as unlist. The use.names parameter is described in ?unlist.

like image 63
IRTFM Avatar answered Nov 02 '22 11:11

IRTFM


c is an S4 Generic function, which means that a different function is called depending on its arguments.

Not all of those functions take the argument use.names, so it does not make sense for it to be documented in the documentation for c().

like image 24
merlin2011 Avatar answered Nov 02 '22 10:11

merlin2011