0

ユーザーが入力したフォーマットされていない Stata コードを取得し、html タグを追加し、コードのブロック全体を返して、ブログや Web ページなどの html 公開場所に簡単にコピー アンド ペーストできる Shiny R アプリケーションを作成したいと考えています。

R の書式設定A Stata HTML 構文ハイライターを処理できる R コードが既にあります。そして、ほとんどの Shiny 実装は非常に簡単に思えます。私が抱えている主な課題は、Shiny の server.R からリアクティブ要素を簡単に取得し、html タグをフォーマットせずにユーザーに返すことができる html テキストボックスまたはその他のオブジェクトを作成することです。

例:

テキストボックスからのStataコード入力

clear
set obs 4000
gen id = _n
gen eta1 = rnormal()
gen eta2 = rnormal()

XX Shiny 送信ボタン XX

別のテキスト ボックスに戻る

<span style="color: #9900FF">set</span> <span style="color: #0000CC"><b>obs</b></span> 4000
<span style="color: #0000CC"><b>gen</b></span> id = <span style="color: #9900FF">_n</span>
<span style="color: #0000CC"><b>gen</b></span> eta1 = <span style="color: #9900FF">rnormal</span>()
<span style="color: #0000CC"><b>gen</b></span> eta2 = <span style="color: #9900FF">rnormal</span>()

全体として、これは一般的に、潜在的に非常に単純な答えに対する長い質問だと思います。ご検討いただきありがとうございます。

4

1 に答える 1

2

renderText()HTML タグを解析しません。たとえば、次のようにします。

output$code <- renderText({

  paste0(
    '<span style="color: #9900FF">set</span> <span style="color: #0000CC"><b>obs</b></span> 4000',
    '<span style="color: #0000CC"><b>gen</b></span> id = <span style="color: #9900FF">_n</span>',
    '<span style="color: #0000CC"><b>gen</b></span> eta1 = <span style="color: #9900FF">rnormal</span>',
    '<span style="color: #0000CC"><b>gen</b></span> eta2 = <span style="color: #9900FF">rnormal</span>'  
  )

})

これはあなたの場所ですui.R

library(shiny)

shinyUI(pageWithSidebar(

  headerPanel("Code"),

  sidebarPanel(

  ),

  mainPanel(
    verbatimTextOutput("code")
  )

))

コンテンツは単なるテキストとして出力されます。


しかし、ui.R (または index.html) を投稿していないので、出力をどのようにレンダリングしているかわかりません。解析された HTML の代わりに生のテキストを表示する際に問題がある場合は、いつでも次のように置き換えること<&lt;でき>ます&gt;

html <- '<span>text</span>'
x <- gsub('<', '&lt;', html)
gsub('>', '&gt;', x)

どちらが生成されますか:&lt;span&gt;text&lt;/span&gt;ブラウザで解析された HTML として表示されるべきではありません。

于 2013-08-14T08:46:45.617 に答える