在write.csv中解析奇怪的参数

时间:2014-06-03 12:42:15

标签: r

考虑以下两个命令:

> write.csv(irfilt,'foo.bar',row.names=FALSE)
#works fine but: 
> write.csv(irfilt,'foo.bar',row.n=FALSE)
Error in write.table(irfilt, "foo.bar", row.n = FALSE, col.names = NA,  : 
  'col.names = NA' makes no sense when 'row.names = FALSE'

我原本希望row.n自动扩展为row.names,但显然没有发生。 write.table的任何其他允许参数都不会与row.names混淆。有谁知道造成这种误解的原因是什么?我认为这可能与write.csv没有命名参数的事实有关,但似乎很奇怪我不会得到关于未知参数的错误消息,而不是错误解释的arg。

1 个答案:

答案 0 :(得分:4)

write.csv内没有任何partial argument matching,因为write.csv的唯一参数是...。所以write.csv试图操纵你的电话失败了:

rn <- eval.parent(Call$row.names)
Call$col.names <- if (is.logical(rn) && !rn) TRUE else NA

row.n的来电中,row.nameswrite.table匹配,但write.table生成的write.csv来电是:

write.table(irfilt, "foo.bar", row.n = FALSE, col.names = NA,
            sep = ",", dec = ".", qmethod = "double")

这就是为什么您在col.names = NA时收到row.names = FALSE的错误。