将HTML转换为R Markdown

4

似乎是可能的,但很困难。你到目前为止尝试了什么? - Ben Bolker
它会从哪里获取数据? - hrbrmstr
我在RStudio(v1.4+)中使用可视化Markdown编辑器编写了下面的答案,这使得偶尔的转换非常容易。 - Mark Neal
5个回答

6

这是我使用的解决方案:

  • 将 .html 文件转换为 .md 文件:
pandoc ./test.html -o test.md
  • 将 .md 文件重命名为 .rmd
mv test.md test.rmd
  • 对代码进行后处理,以组织块和段落
# chunks r marker: replace ' {\.sourceCode \.r}' by '{r}'
sed -i 's/ {\.sourceCode \.r/{r/' test.rmd
# delete lines beginning wit ':::'
sed -i '/^:::/d' test.rmd
# delete lines beginning '![](data:image' (html plot)
sed -i '/^\!\[\](data:image/d' test.rmd
# delete paragraph separator lines
sed -i '/^=====/d' test.rmd
sed -i '/^-----/d' test.rmd
# replace paragraph marks
#'[1]{.header-section-number}' by '#'
sed -i 's/\[[0-9]\+\]{\.header-section-number}/#/' test.rmd
#'[1.1]{.header-section-number}' by '##'
sed -i 's/\[[0-9]\+\.[0-9]\+\]{\.header-section-number}/##/' test.rmd
#'[1.1.1]{.header-section-number}' by '###'
sed -i 's/\[[0-9]\+\.[0-9]\+\\.[0-9]\+]{\.header-section-number}/###/' test.rmd
  • 添加YAML头信息
echo "$(echo -e "\n" | cat - test.rmd)" > test.rmd
echo "$(echo '---' | cat - test.rmd)" > test.rmd
echo "$(echo 'title: '\"'test'\" | cat - test.rmd)" > test.rmd
echo "$(echo '---' | cat - test.rmd)" > test.rmd

当然,你可以将这些行放入一个.sh文件中,以简化任务。

5
简而言之,不行。
几乎可以说 pandoc 二进制文件是非常强大的,我经常用它将 Rd 文件的 html 输出转换回 markdown(以便包含在其他 markdown 文档中)。
但是,这只是利用了 pandoc 的所长:从 markdown 转换为 html 等。因此,除了从创建的输出中获取代码的玄学难题之外,您还需要考虑工具不匹配的问题,因为 pandoc 对 R 一无所知。
因此,总的来说:您可能希望获取原始源代码,因为您无法从其生成的 html 输出中重新创建 Rmd。

5
您可以通过以下方式获得98%的结果:
  1. 打开新的 rmarkdown 文件(在 RStudio v1.4+ 中),
  2. 点击“切换到可视化 markdown 编辑器”按钮*,
  3. 从浏览器中选择并复制 html 输出
  4. 粘贴到您的 rmarkdown 文件中。
为了获得最后的2%,您需要确保 R 代码块被识别:
  1. 点击“切换到源编辑器”按钮(与上面相同的按钮)。
  2. 找到并替换 <!-- --> ```{r} 并完成代码块与 ```
然后确保数据按照代码要求可用。祝好运!
* 要切换到 markdown 文档的可视模式,请使用编辑器工具栏顶部右侧带有指南针图标的按钮 - 在此处描述:https://blog.rstudio.com/2020/09/30/rstudio-v1-4-preview-visual-markdown-editing/

1
救了我。服务器崩溃时丢失了数据帧,但有HTML文件的备份。谢谢您。 - The AEB
1
这绝对是最简单的解决方案!太棒了! - TWest

5
如果一个Markdown文件(.md)就足够了,那么如果你还没有安装的话,请下载并安装pandoc。然后从命令行运行该命令,或从R中使用system("pandoc ...")shell("pandoc ...")
pandoc https://cran.r-project.org/web/packages/tidytext/vignettes/tidytext.html -o out.md

对于特定的文件,后处理源代码和输出部分是可能的,但这将表示一些额外的努力,可能是相当大的。

Markdown看起来还不错,但缺乏rmd文件的完整可执行性。 - Adam_G

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接