对于 dygraph 循环在 R 中不起作用
For loop over dygraph does not work in R
dygraph
上有一些奇怪的行为。
当对 dygraph
使用 for
循环时,我没有得到任何结果。
library(dygraphs)
lungDeaths <- cbind(mdeaths, fdeaths)
for(i in 1:2){
dygraph(lungDeaths[, i])
}
另一方面,当我使用 lapply
时,我确实得到了预期的结果
lapply(1:2, function(i) dygraph(lungDeaths[, i]))
我实际上想在我自己的数据集上使用 R Markdown
中的 for
循环并迭代不同的列,但即使我使用 lapply
"workaround", 它不绘制 dygraphs
R Markdown代码
---
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])
```
任何帮助将不胜感激。
Session 信息
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
只需将 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 帮助我实现目标,感谢他们在开发和帮助使用这些工具方面所做的大量工作。
dygraph
上有一些奇怪的行为。
当对 dygraph
使用 for
循环时,我没有得到任何结果。
library(dygraphs)
lungDeaths <- cbind(mdeaths, fdeaths)
for(i in 1:2){
dygraph(lungDeaths[, i])
}
另一方面,当我使用 lapply
时,我确实得到了预期的结果
lapply(1:2, function(i) dygraph(lungDeaths[, i]))
我实际上想在我自己的数据集上使用 R Markdown
中的 for
循环并迭代不同的列,但即使我使用 lapply
"workaround", 它不绘制 dygraphs
R Markdown代码
---
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])
```
任何帮助将不胜感激。
Session 信息
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
只需将 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 帮助我实现目标,感谢他们在开发和帮助使用这些工具方面所做的大量工作。