如何将额外参数传递给R中do.call的函数参数

如何将额外参数传递给R中do.call的函数参数,r,R,我想将参数(stringsAsFactors=FALSE)传递给do.call中的rbind。但以下方法不起作用: data <- do.call(rbind, strsplit(readLines("/home/jianfezhang/adoption.txt"), split="\t#\t"), args=list(stringsAsFactors=FALSE)) data我不确定您的函数调用是否有效,但请尝试以下方法: data <

我想将参数(
stringsAsFactors=FALSE
)传递给
do.call中的
rbind
。但以下方法不起作用:

data <- do.call(rbind, 
          strsplit(readLines("/home/jianfezhang/adoption.txt"), split="\t#\t"), 
          args=list(stringsAsFactors=FALSE))

data我不确定您的函数调用是否有效,但请尝试以下方法:

data <- do.call(rbind,
  c(strsplit(readLines("/home/jianfezhang/adoption.txt"),split="\t#\t"),
  list(stringsAsFactors=FALSE))
如果不是因为
rbind
不知道如何处理
stringsAsFactors
(但是
cbind.data.frame
会这样做),我的答案应该是这样的

strsplit
的输出可能是一个向量列表,在这种情况下,
rbind
创建一个矩阵。将此矩阵转换为data.frame时,可以指定
stringsAsFactors

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

或者,您可以使用
选项将
stringsAsFactors
全局设置为
FALSE

options(stringsAsFactors=FALSE)

在脚本顶部设置此选项将在整个脚本中强制执行。您甚至可以添加到
.Rprofile
,为您打开的所有R会话设置此选项。

rbind只有deparse.level(而不是stringsAsFactors)参数。看一看您的数据如何?-请不要提供敏感信息,但要提供一个最小的可复制示例(例如,
dput(readLines(“/home/jianfezhang/adoption.txt”,n=5))
data.frame(do.call(rbind, list(1:10, letters[1:10])), stringsAsFactors=FALSE)
options(stringsAsFactors=FALSE)