首页 > 解决方案 > 删除打印到文件中的多余行

问题描述

我正在尝试打印以归档str_split操作的输出,如下所示:

s <- t(unlist(str_split("foo_bar_0.5", "_"), use.names = FALSE))
write.csv(s, "test.csv", quote = FALSE, row.names = FALSE, col.names = FALSE)

使用该row.names = FALSE参数,我能够删除行名。但是,此代码仍将包含列名的额外行写入文件,如下所示:

V1,V2,V3
foo,bar,0.5

带有以下警告:

Warning message:
In write.csv(s, "test.csv", quote = FALSE,  :
  attempt to set 'col.names' ignored

我只想要第二行。任何想法我做错了什么?

标签: rstring

解决方案


使用write.table代替write.csv

write.table(s, "test.csv",sep=',', quote = FALSE, row.names = FALSE, col.names = FALSE)

write.table 有两个参数,如 sep 用于正确放置分隔符,在这种情况下它的逗号,另一个参数是 col.names 这是一个有效参数,将其设置为 False 应该适合你。

同样根据文档,如果查找 ?write.csv,对于 ellipsis(...) ,它会显示以下内容

... write.table 的参数:append、col.names、sep、dec 和 qmethod 不能更改。

文档中还提供了更详细的解释,其中提到了您收到的警告:

write.csv 和 write.csv2 为编写 CSV 文件提供了便利的包装器。如果 row.names = TRUE(默认值),他们将 sep 和 dec(见下文)、qmethod = "double" 和 col.names 设置为 NA,否则设置为 TRUE。

write.csv 使用“.” 小数点和逗号作为分隔符。

write.csv2 使用逗号作为小数点,使用分号作为分隔符,这是某些西欧语言环境中 CSV 文件的 Excel 约定。

这些包装器故意不灵活:它们旨在确保使用正确的约定来编写有效的文件。更改 append、col.names、sep、dec 或 qmethod 的尝试将被忽略,并发出警告。


推荐阅读