我想在stringsAsFactors=FALSE
中将参数(rbind
)传递给do.call
。但以下不起作用:
data <- do.call(rbind,
strsplit(readLines("/home/jianfezhang/adoption.txt"), split="\t#\t"),
args=list(stringsAsFactors=FALSE))
答案 0 :(得分:26)
do.call(rbind.data.frame, c(list(iris), list(iris), 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)
答案 1 :(得分:6)
或者,您可以使用stringsAsFactors
在全球范围内将FALSE
设置为options
:
options(stringsAsFactors=FALSE)
在脚本顶部设置此选项将在整个脚本中强制执行此操作。您甚至可以添加.Rprofile
为您打开的所有R会话设置此选项。
答案 2 :(得分:1)
我不确定你的函数调用是否有效,但试试这个:
data <- do.call(rbind,
c(strsplit(readLines("/home/jianfezhang/adoption.txt"),split="\t#\t"),
list(stringsAsFactors=FALSE))
您需要通过一个列表将所有参数传递给do.call
。
您可以按c
> c(list(1, 2), list(3, 4))
[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
[1] 3
[[4]]
[1] 4