我想在do.call
中将参数(stringsAsFactors=FALSE
)传递给rbind
。但下面不工作:如何将额外参数传递给R中的do.call函数参数
data <- do.call(rbind,
strsplit(readLines("/home/jianfezhang/adoption.txt"), split="\t#\t"),
args=list(stringsAsFactors=FALSE))
我想在do.call
中将参数(stringsAsFactors=FALSE
)传递给rbind
。但下面不工作:如何将额外参数传递给R中的do.call函数参数
data <- do.call(rbind,
strsplit(readLines("/home/jianfezhang/adoption.txt"), split="\t#\t"),
args=list(stringsAsFactors=FALSE))
do.call(rbind.data.frame, c(list(iris), list(iris), stringsAsFactors=FALSE))
Concat的两个列表将是我的答案,如果它不是一个事实,即rbind
不知道该怎么做stringsAsFactors
(但cbind.data.frame
会)。
strsplit
的输出大概是一个向量列表,在这种情况下rbind
创建一个矩阵。您可以将这个矩阵转换为data.frame时或者指定stringsAsFactors
,
data.frame(do.call(rbind, list(1:10, letters[1:10])), stringsAsFactors=FALSE)
我不知道,如果你的函数调用是有效的,但试试这个:
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
,您可以设置stringsAsFactors
到FALSE
全球使用options
:
options(stringsAsFactors=FALSE)
在脚本的顶部设置,这将强制执行这整个脚本。您甚至可以添加到.Rprofile
为您打开的所有R会话设置此选项。
rbind只有deparse.level(不是stringsAsFactors)参数。 – 2012-04-12 08:27:01
如何看待您的数据? - 请不要有敏感信息,但是一个最小可重现的例子(例如'dput(readLines(“/ home/jianfezhang/adoption.txt”,n = 5))') – BenBarnes 2012-04-12 08:36:59