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

如何在Rmarkdown中通过cat()生成带换行项目符号的内容

解决Rmarkdown中cat()输出多行带项目符号内容的方法

方法1:每行整合成独立字符串后换行

把每一行的内容先拼接成完整字符串,再用sep="\n"分隔这些行,就能得到你要的输出:

cat(
  paste("First Case Reported in :  •", as.character(as.Date("2023-01-23"))),
  paste("TB outbreak been ongoing for  •", paste0(55, ' ', 'Weeks')),
  paste("cummulative cases  •", 4567),
  paste("Total cases in last 24hrs  •", 67),
  sep = "\n"
)

每个paste()生成一行完整内容,sep="\n"负责在各行之间添加换行符,输出完全符合预期。

方法2:用向量批量生成(适合内容较多时)

如果后续需要添加更多行,把标签和值分别存在向量里,批量拼接会更高效:

# 定义标签和对应的值
labels <- c(
  "First Case Reported in :",
  "TB outbreak been ongoing for",
  "cummulative cases",
  "Total cases in last 24hrs"
)

values <- c(
  as.character(as.Date("2023-01-23")),
  paste0(55, ' ', 'Weeks'),
  4567,
  67
)

# 拼接每行内容并输出
lines <- paste(labels, " •", values)
cat(paste(lines, collapse = "\n"))

方法3:直接输出Markdown列表(更贴合Rmarkdown场景)

既然是在Rmarkdown里,也可以直接输出标准的Markdown项目符号格式,渲染后会自动变成美观的列表:

cat(
  paste("- First Case Reported in :", as.character(as.Date("2023-01-23"))),
  paste("- TB outbreak been ongoing for:", paste0(55, ' ', 'Weeks')),
  paste("- cummulative cases:", 4567),
  paste("- Total cases in last 24hrs:", 67),
  sep = "\n"
)

为啥你原来的sep="\n"没用?

你之前的代码把每个文本片段(比如"First Case Reported in : "、"•"、日期字符串)都作为独立参数传给cat(),sep="\n"会被添加到所有参数之间,导致每个小片段都换行了,自然输出混乱。核心是要先把每行的内容整合成一个整体,再给行与行之间加换行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:45:32