You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用readr::write_csv保存带引号的.csv文件?

在R中用readr::write_csv生成带引号的CSV(兼顾速度与LF换行)

你观察得很到位!base R的write.csv()默认会给所有字段套上引号,而readr::write_csv()确实默认输出不带引号的CSV,而且乍一看好像找不到调整这个的选项——但其实它是支持控制引号行为的,完美解决你想要兼顾速度、LF换行和带引号输出的需求!

核心参数:quote

readr::write_csv()的quote参数就是用来控制引号规则的,它有三个可选值:

  • "needed"(默认):仅给包含逗号、换行符或引号的特殊字段加引号
  • "all":给所有字段都加上引号,和write.csv()的默认行为完全一致
  • "none":完全不添加引号(保持默认的极简输出)

可复现示例

先构造一个包含特殊内容的测试数据框:

library(readr)

# 包含带逗号、换行符的字段,模拟真实场景
test_df <- data.frame(
  name = c("Alice", "Bob, Jr.", "Charlie"),
  age = c(25, 30, 35),
  hobby = c("Reading", "Hiking\nCamping", "Photography")
)

1. 生成全引号的CSV(匹配write.csv())

用quote = "all"参数就能实现和write.csv()一样的带引号输出,同时保留readr的速度和LF换行优势:

# 生成全引号CSV
write_csv(test_df, "all_quoted.csv", quote = "all")

打开这个文件你会看到所有字段都被引号包裹,而且在Windows系统下直接是LF换行,不用再用Notepad++之类的工具转换。

2. 对比默认行为(仅特殊字段加引号)

如果用默认参数,只有包含特殊字符的字段会被加引号:

# 默认行为:仅特殊字段加引号
write_csv(test_df, "default_quoted.csv")

打开后会看到Bob, Jr.和Hiking\nCamping被引号包裹,其他字段则没有。

额外注意点

write.csv()默认会保存行名,而readr::write_csv()默认不保存,如果需要完全匹配write.csv()的输出,记得加上row.names = TRUE参数:

# 带行名的全引号CSV,完全匹配write.csv()输出格式
write_csv(test_df, "all_quoted_with_rownames.csv", quote = "all", row.names = TRUE)

内容的提问来源于stack exchange,提问作者mickkk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:20:30