Для цикла над Dygraph не работает в R

Есть странное поведение на dygraph,

При использовании for цикл для dygraph я не получаю результата.

library(dygraphs)
lungDeaths <- cbind(mdeaths, fdeaths)

for(i in 1:2){
  dygraph(lungDeaths[, i])
}

С другой стороны, когда я использую lapply я получаю ожидаемый результат

lapply(1:2, function(i) dygraph(lungDeaths[, i]))

Я на самом деле хочу использовать for зациклиться R Markdown на моем собственном наборе данных и итерации по различным столбцам, но даже когда я использую lapply "обходной путь", он не строит dygraphs

Код уценки R

---
title: "Untitled"
author: "dimitris_ps"
date: "28 May 2015"
output: html_document
---

```{r}
library(dygraphs)
lungDeaths <- cbind(mdeaths, fdeaths)
lapply(1:2, function(i) dygraph(lungDeaths[, i]))
```

Принимая во внимание, что, когда я запускаю это столбец за столбцом, это работает

---
title: "Untitled"
author: "dimitris_ps"
date: "28 May 2015"
output: html_document
---

```{r echo=FALSE}
library(dygraphs)
lungDeaths <- cbind(mdeaths, fdeaths)
```

```{r}
dygraph(lungDeaths[, 1])
dygraph(lungDeaths[, 2])
```

Любая помощь будет оценена.

Информация о сессии

R version 3.2.0 (2015-04-16)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_United Kingdom.1252  LC_CTYPE=English_United Kingdom.1252   
[3] LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C                           
[5] LC_TIME=English_United Kingdom.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] dygraphs_0.4.3 devtools_1.7.0

loaded via a namespace (and not attached):
[1] htmltools_0.2.6 tools_3.2.0     yaml_2.1.13     rmarkdown_0.6.1 digest_0.6.8 

1 ответ

Решение

Просто оберните список вывода из lapply() в htmltools::tagList()например,

```{r}
library(dygraphs)
lungDeaths <- cbind(mdeaths, fdeaths)
res <- lapply(1:2, function(i) dygraph(lungDeaths[, i]))
htmltools::tagList(res)
```

Для тех, кто борется с петлей, вот что сработало для меня.

p=list()
for (n in 1:3){
  p[[n]] <- plot_ly(x = 1:100, y = rnorm(100)+n, mode = 'lines', type="scatter")
}
htmltools::tagList(p)

Т.е. не имеет значения, создается ли список p в цикле или lapply и т. Д., Пока вы вызываете htmltools::tagList вне цикла.

Спасибо Yihui за то, что помог мне добраться туда, и за огромную работу по разработке и помощи с этими инструментами.

Другие вопросы по тегам