R Markdown:使用 for 循环(或函数)时,visNetWork 不会显示在 html 输出中

Vin*_*mot 3 r visnetwork

visNetwork当尝试在 for 循环中显示时,My根本不显示。在常规 R 脚本中,我使用该print函数并且它工作得很好,但它在 R Markdown 文档中不起作用。

这是一个(希望)可重现的示例:

---
title: "I want my beautiful networks back!"
---

# First example that works

```{r}
require(visNetwork, quietly = TRUE)
# minimal example
nodes <- data.frame(id = 1:3)
edges <- data.frame(from = c(1,2), to = c(1,3))
vn <- visNetwork(nodes, edges, width = "100%")
vn # Or print(vn)
```

# When does it not work?

## In a for loop

```{r}
for (i in 1) vn
```

## In a for loop + using print

This will display the network in the Viewer.

```{r}
for (i in 1) print(vn)
```

## And also in functions

Same remark...

```{r}
foo <- function(x) print(x)
foo(vn)
```
Run Code Online (Sandbox Code Playgroud)

我正在使用 Rstudio 版本 1.1.383,这是一个结果sessionInfo()

R version 3.4.2 (2017-09-28)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Sierra 10.12.6

other attached packages:
[1] visNetwork_2.0.2
Run Code Online (Sandbox Code Playgroud)

J_F*_*J_F 7

我刚刚找到了一个小解决方法,包括以下步骤:

  • 将绘图保存为 HTML
  • 在 RMD 文件中包含 HTML 代码

这里有一个例子:

```{r}
for (i in 1:3){
  visSave(vn, file = paste0("test",i,".html"))
}
```

```{r, results='asis'}
for (i in 1:3){
  cat(htmltools::includeHTML(paste0("test",i,".html")))
}
```
Run Code Online (Sandbox Code Playgroud)