私はR Markdown Shinyドキュメントを開発しています:
- 「日付」列といくつかの数値データ列を含むようにデータ フレームをサブセット化します。光沢のあるユーザー入力の設定方法では、含めるデータ列のラジオ ボタンを選択し、[サブセット データ] ボタンをクリックして作成します
d()
- 問題ありません:) plotList
数値データ列 (日付列に対してプロット) ごとに 1 つずつ、プロットのリスト ( ) を生成します。openair
パッケージtimePlot
関数を使用してプロットlapply
を生成し、プロット オブジェクトのリストを生成しています (plotList
) - 問題ありません:)renderPlot
すべてのプロットを R Markdown ドキュメントに出力するために使用plotList
- 問題:(
私は同様の質問があったことを知っています (例: https://gist.github.com/wch/5436415/、R の反応性はおもちゃの例を使った光沢のあるもので、光沢のあるものを使用して Web ページにプロットを動的に追加します)、私が試したことを信じてくださいそして試してみました(たとえば、lapplyの代わりにforループを使用します-私の好みではありませんが、それが機能した場合、誰が気にしますか; local() および/またはobserve();などを追加します)。私が何をしても、私はそれを機能させることができません。私は R Markdown と Shiny を初めて使用します。これを理解することはできません - 助けてください!
これは再現可能な例です (R マークダウンの光沢のあるドキュメントとして実行されます)。
まず、リアクティブ データセットを作成するチャンクd()
:
```{r reactive-dataset, echo=FALSE,message=FALSE}
library(openair)
library(dplyr)
data<-mydata[1:50,]
print(tbl_df(data))
inputPanel(
checkboxGroupInput(inputId="p",
label="select pollutants to plot",
choices=names(data)[-1]
),
actionButton(inputId="import",
label="Subset Data")
)
d<-eventReactive(input$import,{
d<-data %>% select(date,one_of(input$p))
})
renderPrint({tbl_df(d())})
```
次に、2 番目のチャンクを作成plotList
して出力します (機能しない部分):
試行 1: 最後のプロットのみが表示されます
```{r plot,echo=FALSE,message=FALSE}
renderPlot({
i<-names(d())[-1]
tp<-function(x){
p<-timePlot(d(),
pollutant=print(x),
main="Minute Validation",
ylab="Minute Conc. (ug/m3 or ppb)",
key=T)
p$plot
}
lapply(i,tp)
})
```
試行 2 (おもちゃの例で光沢のある R の反応性に基づく)。プロットが表示されない
```{r plot,echo=FALSE,message=FALSE}
plotList<-reactive({
i<-names(d())[-1]
tp<-function(x){
p<-timePlot(d(),
pollutant=print(x),
main="Minute Validation",
ylab="Minute Conc. (ug/m3 or ppb)",
key=T)
p$plot
}
lapply(i,tp)
})
observe({
for (j in 1:length(plotList())){
local({
my_j<-j
renderPlot({plotList()[[my_j]]})
})#end local
} #end for loop
}) #end observe
```
上記でリンクした同様の質問を参照して、これを際限なくいじりました。