Rich Scriven
Rich Scriven

Reputation: 99351

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() ?

Upvotes: 17

Views: 359

Answers (2)

IRTFM
IRTFM

Reputation: 263411

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.

Upvotes: 10

merlin2011
merlin2011

Reputation: 75585

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().

Upvotes: 3

Related Questions