2017-08-09 7 views
3

ハイハターライブラリを使用して、さまざまなプロットをループでプロットすることにいくつか問題があります。私のコードは次のようになります:Markdown R:ループにプロットするためにハイハターを使用する

ここでファイルをアップロードし、すべてのNA値を "na"文字列に変換します。

DT <- fread(file, sep='auto',na.strings=c("Na","-",""), blank.lines.skip=TRUE, stringsAsFactors = FALSE) 
DTT <- DT 
``` 

```{r, echo=F, results='asis'} 
for(i in seq_along(DTT)) { 
    DTT[[i]] <- sapply(DTT[[i]], function(x) if(is.na(x)) x <- "na" else x <- x) 
    DTT[[i]] <- as.factor(DTT[[i]]) 
} 

私はループを実行しようとしました:

for(i in seq_along(DTT)) { 

     hc <- highchart() %>% 
     hc_title(text = 'prueba', 
       style = list(fontSize = "15px")) %>% 
     hc_chart(type = 'pie') %>% 
     hc_xAxis(categories = DTT[[i]]) %>% 
     hc_add_series(DTT[[i]], name = "Market", showInLegend = FALSE) 
     hc 
    } 

はまた、私は、関数を作成し、ループを通してそれを呼び出そうとしましたが、両方が動作しませんでした。

最後に、lapply functionを使用して、データフレームのすべての列にプロット関数を適用しましたが、うまく機能しませんでした。おそらく私はlapplyのプロセスを正しく行っていないでしょう。私の検索

gethc <- function(DT) { 
    hc <- highchart() %>% 
    hc_title(text = 'prueba', 
      style = list(fontSize = "15px")) %>% 
    hc_chart(type = 'pie') %>% 
    hc_xAxis(categories = DT) %>% 
    hc_add_series(DT, name = "Market", showInLegend = FALSE) 
    hc 
} 

lapply(DTT, gethc) 

が見つかりました:あなたが自動印刷がオフになっているが、それは何も印刷されませんでしたので、ループ内での印刷を使用する必要がPlot inside a loop using highcharter

例:

DT <- mtcars 
for(i in seq_along(DT)) { 
    DT[[i]] <- sapply(DT[[i]], function(x) if(is.na(x)) x <- "na" else x <- x) 
} 

gethc <- function(i) { 
    hc <- highchart() %>% 
    hc_title(text = 'prueba', 
      style = list(fontSize = "15px")) %>% 
    hc_chart(type = 'pie') %>% 
    hc_xAxis(categories = DT[[i]]) %>% 
    hc_add_series(DT[[i]], name = "Market", showInLegend = FALSE) 
    print(hc) 
} 

for(i in seq_along(DT)) { 
    gethc(i) 
} 

これは.Rプログラムで動作しますが、誰かがこの問題のいくつかの解決策を持っている場合はRマークダウン

にそれは本当に参考になりますではありません。

+0

したがって、 'hc'の代わりに' print(hc) 'を使用すると動作しません。私たちに再現可能な実例を教えてもらえますか?たくさんのプロットを作成しようとしていますか?毎回 'hc'を上書きしているからです。 RMarkdownのドキュメント(おそらく通常のクリーンセッション)の外で動作しますか? – Axeman

+0

はい通常の.Rで動作し、完全にプロットしますが、markdownでは全く動作しません。必要な場合は、コードを送信できます。 –

+0

単純に完全に再現可能な例を含めると、あなたの質問は答えを受け取る可能性が非常に高くなります。 – Axeman

答えて

2

R値下げでループを使用してチャートhighcharter印刷する方法はありませんように見えますが、私はhtmltoolsを使用してtagListに送信するhighcharterチャートのリストを作成する方法を発見し、幸いにも今すべてを正しく印刷します。

DT <- mtcars 
gethc <- function(i) { 
    hc <- highchart() %>% 
    hc_title(text = 'prueba', 
      style = list(fontSize = "15px")) %>% 
    hc_chart(type = 'pie') %>% 
    hc_xAxis(categories = DT[[i]]) %>% 
    hc_add_series(DT[[i]], name = "Market", showInLegend = FALSE) 
    hc 
} 
a = list() 
for(i in seq_along(DT)) { 
    a[[i]] <- gethc(i) 

} 

htmltools::tagList(a) 
関連する問題