How to pass extra argument to the function argument of do.call in R

Solution 1:

do.call(rbind.data.frame, c(list(iris), list(iris), stringsAsFactors=FALSE))

would have been my answer, if it wasn't for the fact that rbind does not know what to do with stringsAsFactors (but cbind.data.frame would).

The output of strsplit is presumably a list of vectors, in which case rbind creates a matrix. You can specify stringsAsFactors when converting this matrix to a data.frame,

data.frame(do.call(rbind, list(1:10, letters[1:10])), stringsAsFactors=FALSE)

Solution 2:

Alternatively, you can set stringsAsFactors to FALSE globally using options:

options(stringsAsFactors=FALSE)

Setting this at the top of the script will enforce this throughout the script. You could even add to .Rprofile to set this option for the all the R sessions you open.