【问题标题】:How to export proper TSV?如何导出正确的 TSV?
【发布时间】:2023-03-11 16:05:01
【问题描述】:

简明扼要:如何从 R 导出 TSV/CSV?

write.table / write.csv 几乎有效:

test <- data.frame(a = 2 : 4, b = 3 : 5)
write.table(test, file='test.tsv', quote=FALSE, sep='\t')
$ more test.tsv
a   b
1   2   3
2   3   4
3   4   5

...但生成的格式与大多数其他程序所期望的格式不同:

    a   b
1   2   3
2   3   4
3   4   5

–注意标题行的不同处理方式。

如何导出第二种格式而不是第一种格式?手动将 col.names 指定为 c('', colnames(test)) 不起作用 - R 抱怨参数无效。

【问题讨论】:

  • 我认为对于 csv 或 tsv 文件没有“正确”的定义,只是一堆不同的约定。
  • @Spacedman 我同意,因此我对“大多数其他程序的预期”问题进行了澄清。

标签: r tsv


【解决方案1】:

您也可以考虑排除行名row.names = FALSE

【讨论】:

  • 从预期的输出 OP 显然想要保留行号。这已经在上面的 cmets 中提出了建议。
【解决方案2】:

你可以使用col.names = NA:

write.table(test, file='test.tsv', quote=FALSE, sep='\t', col.names = NA)

【讨论】:

  • @KonradRudolph 我同意这是那些记录薄弱的“陷阱”之一。从好的方面来说,一旦你学会了它,你就永远不会忘记:-)
  • @Carl 尽管有你的承诺,但我又忘记了。 :-/
  • 你真的不想要 row.names = FALSE 吗?
  • 关于 R 的说法很多,但“直观的默认选项”不是其中之一。
  • 抱歉复活了,不过@DaveH 是对的,我想你想要的是row.names = FALSEcol.names = FALSE,而不是NA
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-24
  • 2021-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多