如何在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
相关产品推荐
相关产品推荐

