当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R reprex un-reprex 取消渲染reprex


从野外捕获的 reprex 中恢复干净、可运行的代码并将其写入用户的剪贴板。代码也会以不可见的方式返回,并可选择写入文件。三个不同的函数可解决各种形式的 wild-caught 表示。

用法

reprex_invert(
  input = NULL,
  wd = NULL,
  venue = c("gh", "r"),
  comment = opt("#>"),
  outfile = deprecated()
)

reprex_clean(
  input = NULL,
  wd = NULL,
  comment = opt("#>"),
  outfile = deprecated()
)

reprex_rescue(
  input = NULL,
  wd = NULL,
  prompt = getOption("prompt"),
  continue = getOption("continue"),
  outfile = deprecated()
)

参数

input

特点。如果长度为 1 并且缺少终止换行符,则解释为包含 reprex 的文件的路径。否则,假设将 reprex 保存为字符向量。如果未提供,则参考剪贴板进行输入。如果剪贴板不可用并且我们在 RStudio 中,则使用当前选择。

wd

input 不是文件路径时参考的可选文件路径。 (默认情况下,所有工作都在会话临时目录的子目录中悄悄完成。)

wd 最常见的用法是设置 wd = "." ,这意味着“在当前工作目录中代表正确的位置”。如果您确实必须使用本地文件演示某些内容,请执行此操作。

venue

特点。必须是以下之一(不区分大小写):

  • "gh" 代表 GitHub-Flavored Markdown ,默认值

  • "r" 用于可运行的 R 脚本,带注释的输出交错。对于 Slack code snippets 也很有用;从 "Type" 下拉菜单中选择 "R" 以享受漂亮的语法突出显示。

  • Rich Text Format 的 "rtf"(un-reprexing 不支持)

  • "html" 适用于适合包含在较大 HTML 文档中的 HTML 片段(不支持 un-reprexing)

  • "slack" 用于粘贴到 Slack 消息中。针对选择退出 Slack 所见即所得接口的用户进行了优化。转到首选项 > 高级 > 输入选项,然后选择“使用标记格式化消息”。 (如果需要针对所见即所得进行优化的第二个 Slack 场地,请提出问题进行讨论。)

  • "so"为Stack Overflow Markdown。注意:这只是 "gh" 的别名,因为 Stack Overflow 于 2019 年 1 月开始支持 CommonMark 风格的隔离代码块。

  • "ds" 用于话语,例如 community.rstudio.com 。注意:这目前只是 "gh" 的别名。

comment

匹配注释输出行的正则表达式

outfile

[Deprecated]有利于wd或提供文件路径input。要在当前工作目录中表示,请使用wd = "."现在,而不是outfile = NA.

prompt

字符,R 命令开头的提示符

continue

字符,续行提示符

字符向量只保存干净的 R 代码,不可见

职能

  • reprex_invert() :尝试逆转 reprex() 的效果。当 venue = "r" 时,这只是调用 reprex_clean()

  • reprex_clean() :假设 R 代码是顶级的,可能与注释输出交错,例如从 GitHub 复制的显示表示或 reprex(..., venue = "R") 的直接输出。此函数删除注释输出。

  • reprex_rescue() :假设 R 代码行以提示开头,并且打印输出是顶级的,例如,您从 R 控制台复制/粘贴得到的内容。删除输出行并从包含 R 命令的行中删除提示。

例子

if (FALSE) {
# a roundtrip: R code --> rendered reprex, as gfm --> R code
original <- file.path(tempdir(), "original.R")
writeLines(glue::glue("
  #' Some text
  #+ chunk-label-and-options-cannot-be-recovered, message = TRUE
  (x <- 1:4)
  #' More text
  y <- 2:5
  x + y"), con = original)
reprex(input = original, html_preview = FALSE, advertise = FALSE)
reprexed <- sub("[.]R$", "_reprex.md", original)
writeLines(readLines(reprexed))
unreprexed <- reprex_invert(input = reprexed)
writeLines(unreprexed)

# clean up
file.remove(
  list.files(dirname(original), pattern = "original", full.names = TRUE)
)
}
if (FALSE) {
# a roundtrip: R code --> rendered reprex, as R code --> original R code
code_in <- c(
  "# a regular comment, which is retained",
  "(x <- 1:4)",
  "median(x)"
)
reprexed <- reprex(input = code_in, venue = "r", advertise = FALSE)
writeLines(reprexed)
code_out <- reprex_clean(input = reprexed)
writeLines(code_out)
identical(code_in, code_out)
}
if (FALSE) {
# rescue a reprex that was copied from a live R session
from_r_console <- c(
  "> # a regular comment, which is retained",
  "> (x <- 1:4)",
  "[1] 1 2 3 4",
  "> median(x)",
  "[1] 2.5"
)
rescued <- reprex_rescue(input = from_r_console)
writeLines(rescued)
}
源代码:R/reprex-undo.R

相关用法


注:本文由纯净天空筛选整理自Jennifer Bryan等大神的英文原创作品 Un-render a reprex。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。