在 R markdown / Dashboard 用户选择下拉菜单中渲染来自磁盘的图像
render image from disk in R markdown / Dashboard on user selection dropdown
我有一个装满图表的文件夹,这些图表是上一步生成的。它们都是PNG文件。
我希望能够选择任何使用 Flexdashboard 的人并加载它。
由于不需要闪亮或服务器服务,我尝试了 Crosstalk 包
library(crosstalk)
library(magrittr)
library(png)
df <- list.files("plots/", full.names = TRUE) %>%
as_tibble() %>%
magrittr::set_names("path")
shared_data <- SharedData$new(df, key = ~path)
p <- shared_data %>% readPNG(source = path)
bscols( filter_select(id = "file_id",
label = "CHOOSE",
sharedData = shared_data,
group = ~path),
p)
我遇到了一个非常简单的错误,我无法解决,因为所有路径都已从文件中正确读取:
Error in path.expand(source) : invalid 'path' argument
也尝试过使用 knitr:
bscols(filter_select("path", "CHOOSE", shared_data),
knitr::include_graphics(shared_data, ~path))
Error in makeGroupOptions(sharedData, group, allLevels) : argument "group" is missing, with no default
也许有更简单的方法,但串扰似乎非常简单,因为它不需要闪亮或任何其他组件,只需要一个数据框。
使用 bsselectR 可以更轻松地实现这一点
该库已有 5 年历史,但在我的试用中运行良好。它不提供与 crosstalk
相同级别的情节内交互,但可能足以满足当前目的。
下面是添加到 R Markdown 文档的代码片段。我更改了示例代码以允许递归目录遍历。
plots
目录需要和R文件放在同一个目录下
```{r}
#
library(stringr)
library(bsselectR)
state_plots <- paste0(list.files("plots", full.names = TRUE, recursive = TRUE))
names(state_plots) <- str_replace_all(state_plots,
c("\.png" = "",
"plots/" = ""))
bsselect(state_plots, type = "img", selected = "sns_heatmap",
live_search = TRUE, show_tick = TRUE)
```
输出:
我有一个装满图表的文件夹,这些图表是上一步生成的。它们都是PNG文件。 我希望能够选择任何使用 Flexdashboard 的人并加载它。 由于不需要闪亮或服务器服务,我尝试了 Crosstalk 包
library(crosstalk)
library(magrittr)
library(png)
df <- list.files("plots/", full.names = TRUE) %>%
as_tibble() %>%
magrittr::set_names("path")
shared_data <- SharedData$new(df, key = ~path)
p <- shared_data %>% readPNG(source = path)
bscols( filter_select(id = "file_id",
label = "CHOOSE",
sharedData = shared_data,
group = ~path),
p)
我遇到了一个非常简单的错误,我无法解决,因为所有路径都已从文件中正确读取:
Error in path.expand(source) : invalid 'path' argument
也尝试过使用 knitr:
bscols(filter_select("path", "CHOOSE", shared_data),
knitr::include_graphics(shared_data, ~path))
Error in makeGroupOptions(sharedData, group, allLevels) : argument "group" is missing, with no default
也许有更简单的方法,但串扰似乎非常简单,因为它不需要闪亮或任何其他组件,只需要一个数据框。
使用 bsselectR 可以更轻松地实现这一点
该库已有 5 年历史,但在我的试用中运行良好。它不提供与 crosstalk
相同级别的情节内交互,但可能足以满足当前目的。
下面是添加到 R Markdown 文档的代码片段。我更改了示例代码以允许递归目录遍历。
plots
目录需要和R文件放在同一个目录下
```{r}
#
library(stringr)
library(bsselectR)
state_plots <- paste0(list.files("plots", full.names = TRUE, recursive = TRUE))
names(state_plots) <- str_replace_all(state_plots,
c("\.png" = "",
"plots/" = ""))
bsselect(state_plots, type = "img", selected = "sns_heatmap",
live_search = TRUE, show_tick = TRUE)
```
输出: