【问题标题】:Convert HTML to R Markdown将 HTML 转换为 R Markdown
【发布时间】:2017-05-11 05:40:11
【问题描述】:

有没有办法将一个html文件,比如https://cran.r-project.org/web/packages/tidytext/vignettes/tidytext.html,转换成可执行的R Markdown文件(rmd)?

【问题讨论】:

  • 似乎可行但很难。到目前为止,您尝试过什么?
  • 从哪里获取数据?
  • 我在 RStudio (v1.4+) 中使用可视化降价编辑器在下面做了一个回答,这使得偶尔的转换非常容易。

标签: r r-markdown


【解决方案1】:

如果 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 文件的完整可执行性
【解决方案2】:

简而言之,没有。

pandoc 二进制文件简直太棒了,我用它来将html 输出从Rd 文件转换回markdown(以包含在其他markdown 文档中)。

但它使用pandoc 来实现它所知道的:从markdown 转换为html 等。pandoc 本身对R 一无所知。所以除了从输出它创建的,你有一个工具不匹配。

所以在某些情况下:您可能想要原始源代码,因为您无法从它产生的 html 输出重新创建 Rmd。

【讨论】:

    【解决方案3】:

    这是我使用的解决方案:

    • 将 .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 中以简化任务

    【讨论】:

      【解决方案4】:

      您可以通过以下方式获得 98% 的结果:

      1. 打开一个新的 rmarkdown 文件(在 RStudio v 1.4+ 中),
      2. 点击“切换到可视化降价编辑器”按钮*,
      3. 从浏览器中选择并复制 html 输出
      4. 粘贴到您的 rmarkdown 文件中。

      要获得最后 2%,您需要确保 R 代码块被识别:

      1. 点击“切换到源代码编辑器”按钮(与上面的按钮相同)。
      2. 使用 ```{r} 查找并替换<!-- -->,并在完成代码块后使用```

      并确保数据按代码要求可用。祝你好运!

      *要切换到 Markdown 文档的可视模式,请使用编辑器工具栏右上角带有指南针图标的按钮 - 此处描述:https://blog.rstudio.com/2020/09/30/rstudio-v1-4-preview-visual-markdown-editing/

      【讨论】:

      • 救了我。服务器出现故障时丢失数据帧,但有 html 文件的备份。谢谢。
      【解决方案5】:
      :~$ ## convert .html to .md :
      :~$ pandoc Assessment-Week2B.html -o Assessment-Week2B.md
      :~$ 
      :~$ ## rename .md to .rmd
      :~$ mv Assessment-Week2B.md Assessment-Week2B.rmd
      :~$ 
      :~$ ## edit via RStudio
      :~$ rstudio Assessment-Week2B.Rmd
      

      尝试通过终端修改如下短MV,但通过RStudio修改会更容易。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-17
        • 2010-10-02
        • 2010-09-08
        • 2018-08-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多