2016-04-10 11 views
14

クイック概要

どのように私は、HTMLファイルのRマークダウンファイル内の場所でを置くのですか?RマークダウンファイルにHTMLファイルを含めますか?

詳細

私はchoroplethr経由でいくつかの素晴らしいアニメーションchoroplethマップを作成しました。

リンクが示しているように、アニメーション化されたchoroplethsは一連のPNG画像を作成することによって機能し、画像を循環するHTMLファイルにロールインされてアニメーションを表示します。素晴らしい作品、素晴らしいです。

しかし、私はこれらのページを.Rmdファイルに埋め込み/組み込みたいので、私はこれらのアニメーション化されたchoroplethsを含む包括的なレポートを他の作業とともに持っています。

リンクに相当するものを行う簡単な方法があるはず私には思える:

[please click here](http://this.is.where.you.will.go.html) 

または

画像:

![cute cat image](http://because.that.is.what.we.need...another.cat.image.html) 

画像のパスがあります正確に私が望むもの:juの代わりに情報を配置するための "吹き飛ばされた"参照リンクとしてのst。単なる画像ではなく、完全なHTMLファイルでどうすればいいですか?何か方法はありますか?私が想定している

--- 
title: 'Looking at the demographics issue' 
author: "Mike" 
date: "April 9th, 2016" 
output: 
    html_document: 
    number_sections: no 
    toc: yes 
    toc_depth: 2 
fontsize: 12pt 
--- 

# Introduction 

Here is some interesting stuff that I want to talk about. But first, let's review those earlier demographic maps we'd seen. 

!![demographics map]('./animations/demographics.html') 

は/ !!であることをふり:さんは私のchoropleth HTMLファイルが'./animations/demographics.html'で私のローカルパスに住んでいる、と私は同じようRのマークダウンファイルを持っているとしましょう

例経由

説明私が望むものを正確に行う先行者:HTMLファイルを残りのレポートとインラインで埋め込むことができます。

更新

2つの更新。最近では、私はまだ仕事をすることができませんでしたので、問題を整理するのを手伝ってくれる人のために、すべてをGitHub repositoryにプッシュしました。詳細は、そのレポのReadmeファイルを参照してください。

RマークダウンファイルにHTMLを埋め込むことは非常に便利なので、私はそれを整理しようとしています。


(古いコメント)

役立つ提案のいくつかを1として、私はRのマークダウンファイルに次を試してみましたが、失敗しました:

シャイニー方法:

```{r showChoro1} 
shiny::includeHTML("./animations/demographics.html") 
``` 

(私もYAML部分にruntime:Shinyを追加しました。)

htmltools方法:。

```{r showChoro1} 
htmltools::includeHTML("./animations/demographics.html") 
``` 

(この場合、私はYAMLへの変更を加えていない)

を前者の場合(Shiny)では、それがすべてでは動作しませんでした。実際には、HTMLを含めて、ドキュメントの機能性を完全に混乱させ、ランタイムが永久に完全に機能していないように見えました。 (要するに、すべてをロードするように見えたが、「ローディング」スピンドルは決して去っていなかった)

後者のケースでは、何もうんざりしていたが、壊れたイメージだった。不思議なことに、ドキュメントの上部に "choropleth player"のリボンがあり、それがうまくいけば、画像のどれもポップアップしないということだけです。


私は自分自身の正気のために、簡単なリンクも提供しています。

[This link](./animations/demographics.html) worked without a problem, except that it is not embedded, as I would prefer. 

これは明らかに埋め込みの課題です。

+0

@ chinsoon12ええ、私はそれを試みましたが、うまくいきませんでした。私はそれを間違って試した可能性がありますが、私はここで何か(http://www.html5rocks.com/ja/tutorials/webcomponents/imports/)と同様に成功しました。 –

+1

コードチャンクで行います。 'shiny :: includeHTML'は必要なことをすることができます。 – alistaire

答えて

8

ここではハックです(たぶん美味しくないですが...)。アイデアは、HTMLをプログラムで直接Rmdに挿入し、次にRmdをレンダリングすることです。

temp.Rmdファイル:

--- 
title: "Introduction" 
author: "chinsoon12" 
date: "April 10, 2016" 
output: html_document 
--- 

<<insertHTML:[test.html] 

etc, etc, etc 

```{r, echo=FALSE} 
htmltools::includeHTML("test.html") 
``` 

etc, etc, etc 

test.htmlというファイル:

<html> 

    <head> 
    <title>Title</title> 
    </head> 

    <body> 

     <p>This is an R HTML document. When you click the <b>Knit HTML</b> button a web page will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:</p> 

     <p>test test</p> 

    </body> 
</html> 

冗長なコードはHTMLコードをRMDコー​​ドを交換して、(おそらくたくさんによって短縮することが可能)レンダリングする

library(stringi) 
subHtmlRender <- function(mdfile, htmlfile) { 
    #replace <<insertHTML:htmlfile with actual html code 
    #but without beginning white space 
    lines <- readLines(mdfile) 
    toSubcode <- paste0("<<insertHTML:[",htmlfile,"]") 
    location <- which(stri_detect_fixed(lines, toSubcode)) 
    htmllines <- stri_trim(readLines(htmlfile)) 

    #render html doc 
    newRmdfile <- tempfile("temp", getwd(), ".Rmd") 
    newlines <- c(lines[1:(location-1)], 
        htmllines, 
        lines[min(location+1, length(lines)):length(lines)]) #be careful when insertHTML being last line in .Rmd file 
    write(newlines, newRmdfile) 
    rmarkdown::render(newRmdfile, "html_document") 
    shell(gsub(".Rmd",".html",basename(newRmdfile),fixed=T)) 
} #end subHtmlRender 

subHtmlRender("temp.Rmd", "test.html") 

E DIT:htmltools :: includeHTMLは、私が提供したサンプルファイルでも動作します。あなたの特定のHTMLがUTF8エンコーディングを好まないからですか?


EDIT:フィードバック

に@MikeWilliamsonコメントを取って、私は次のよう

  1. をコピーして、私が持っていたとしてcloudfare.comへの参照を削除し、空白.Rmd
  2. animated_choropleth.htmlを貼り付けてみましたアクセスの問題 レンダリング中(下記参照)
  3. ニットHTML
  4. は、レンダリングされたHTML
  5. が、私はHTMLを取り戻すように見えるが、結果は何であるかどうかわからないのですHTML

を開くと、それらのcloudfareのウェブリンク

  • が同じフォルダにグラフを入れ戻します期待する

    pt 2でも同じ問題がありますか?エラーメッセージを投稿して修正を求めることがあります:)。これは私のエラーメッセージでした

    pandoc.exe: Failed to retrieve http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.1.1/css/bootstrap.min.css 
    FailedConnectionException2 "cdnjs.cloudflare.com" 80 False getAddrInfo: does not exist (error 11001) 
    Error: pandoc document conversion failed with error 61 
    
  • +0

    こんにちは@ chinsoon12、これは間違いなく** **動作するはずですが、私はまだ運がありませんでした。コードは実際には秘密ではないので、私はGitHubリポジトリにすべてプッシュしました。私が上で作ったリポジトリへのリンクを調べることができればすばらしいでしょう。それ以外の場合は、これまでのところあなたの助けをありがとう! –

    +0

    こんにちは@ chinsoon12、フォローアップのおかげで!私はそのエラーを知っています。これはブートストラップの問題からです。より柔軟なHTML "シェイプ"(大型または小画面を可能にする)の手段です。あなたが正しいと思うのは、生成されたchoroplethr HTMLファイル自体を調整するだけでよいということです。私はそれが問題ではないと思った。私がそれをうまく理解したら、私はライブラリーの皆さんと一緒にフォローアップします。再度、感謝します! –

    +0

    問題ありません!誰もがエラーを説明し、編集で修正するのに役立つでしょう:) – chinsoon12

    -2

    この行をRmarkdownに入れてからニットすることができます。 (YAMLヘッダ "出力:html_document"; "ランタイム:光沢のある" 場合には何とかそれは動作しません)

    +0

    申し訳ありませんが、あなたは私がしたいことを誤解していると思います。私はHTMLやShiny *のレンダリング方法を尋ねていません。私は** Rのマークダウン文書内に** HTMLファイル/ページ全体**を置く方法を尋ねています。私はファイル内のHTML構文をカット&ペーストすることができますが、それは非常にエレガントではありません。* HTMLファイル自体は、R Markdownから生成されたHTMLがどのように見えるかのように、あらかじめ生成された非常に大きなガーベルです。 –

    0

    あなたはが含まれてみました:あなたのYAMLヘッダでオプションを?

    https://rmarkdown.rstudio.com/html_document_format.html#includes

    しかし、多分あなたは、私が持っている同じ問題があります:私はないヘッダーにまたはの前に/身体の後、私のRMarkdown文書内の特定のセクションでHTMLファイルをインクルードしたいと思います。

    +0

    ありがとう@thbtmntgn!それはまともな部分解決策ですが、あなたが言ったように、身体の前後だけでなく、HTML **の埋め込み/統合**をドキュメントに入れたいと思っていました。それで、私の場合は(完全に)機能しません。 –

    関連する問題