我构建了一个静态Flexdashboard,其中包含10多个选项卡,每个选项卡中都有多个图。
我为每个评估过的人设置了一个变量作为搜索键,以编织整个仪表板。
例如
library(flexdashboard)
library(tidyverse)
library(plotly)
library(DT)
library(cowplot)
library(lubridate)
df <- read_csv("Database.csv")
name <- regex(pattern="Smith")
如果我要为一个名为Virk的人进行评估,而不必完整整个名字,只需将名称“ Smith”更改为“ Virk”。它还从其他可能没有全名的csv中提取信息,因此,姓氏(首字母大写)是目前的最佳解决方案。谢谢,我暂时没有两个相同的唯一名称。
我的其他标签/图都有使用
的通用过滤器df_radar <- cccdb %>%
filter(str_detect(Name,name))
使用此过滤器系统,我有超过50多个图和数据表。每个html文件(每个经过评估的人)的大小约为6mb。
我想知道是否有一种更简便的方法可以使用Shiny的textInput在我的绘图和数据表上动态更改变量“名称”和renderPlot {},而不必更改我的整个仪表板代码。例如:
library(flexdashboard)
library(tidyverse)
library(plotly)
library(DT)
library(cowplot)
library(lubridate)
library(shiny)
df <- read_csv("Database.csv")
#Replacement of "name" variable
textInput("Name", "name:")
#one of the plot
renderPlot({
name <- regex(pattern = input$Name)
df_radar <- cccdb %>%
filter(str_detect(Name,name) %>%
ggplot(.,
aes(x=Productivity)) +
geom_bar()
df_radar
})
我能够做到这一点。但是,问题是,我必须重复一遍:
name <- regex(pattern = input$Name)
用于所有50多个renderPlots和renderDataTable。我想知道是否有更简单的方法。谢谢您的帮助!
答案 0 :(得分:0)
对不起,我刚刚学习了闪亮的反应功能。我能够回答自己的问题。我想出的解决方案是
/usr/share/vim/vimrc
# Replacement of name variable
textInput("name", "Name:")
# using shiny reactive
name <- reactive({
namer <- regex(pattern = input$name)
namer
})
对于其余的name变量,我只需要将它们替换为name()