sym*_*ush 5 r names reactive-programming shiny
names()我尝试在闪亮的应用程序内部使用reactiveVal但没有成功。
这可能吗?在闪亮的应用程序中命名反应值的替代方法是什么?
我的第一次尝试抛出一个错误:
names(r()) <- "something"
Run Code Online (Sandbox Code Playgroud)
名称错误(r())<-“某事”:赋值左侧无效(NULL)
我的第二次尝试也是如此:
names(r) <- "something"
Run Code Online (Sandbox Code Playgroud)
名称(r)<-“某物”中的错误:名称()应用于非向量
这是一个最小的示例应用程序:
library(shiny)
ui <- fluidPage(mainPanel(textOutput("text")))
server <- function(input, output) {
r <- reactiveVal(1)
# names(r) <- "something"
output$text <- renderText(
paste0("The reactiveVal is ", r(),". It's name is ", names(r()),"."))
}
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
关键在于如何设置值的文档。来自文档:
Call the function with no arguments to (reactively) read the value; call the function with a single argument to set the value.
这意味着它有点深奥,我个人更喜欢使用 magrittr 别名和管道来保持内容可读。稍后设置无功值名称的关键步骤是:
r()来读取当前值。isolate以防止此步骤发生任何反应set_names与名称字符串一起传递。r使用命名值作为参数再次调用反应值以设置r。library(shiny)
library(magrittr)
ui <- fluidPage(mainPanel(textOutput("text")))
server <- function(input, output) {
r <- reactiveVal(1 %>% set_names("something")) #setting the name on initial
isolate(r()) %>%
set_names("something else") %>%
r()
output$text <- renderText(
paste0("The reactiveVal is ", r(),". It's name is ", names(r()),"."))
}
shinyApp(ui = ui, server = server)
#> PhantomJS not found. You can install it with webshot::install_phantomjs(). If it is installed, please make sure the phantomjs executable can be found via the PATH variable.
Run Code Online (Sandbox Code Playgroud)
静态 R Markdown 文档不支持闪亮的应用程序
由reprex 包(v0.3.0)于 2019-08-07 创建