为什么 `R` 管道运算符 `|>` 在使用 Shiny 的反应式编程中不起作用?
Why does the `R` pipe operator `|>` not work in the reactive programming using Shiny?
我想在 R
的最新版本中使用管道运算符 |>
,同时使用 Shiny
进行响应式编程。例如,当我像这样在 server
函数中使用 |>
时:
library(shiny)
ui <- fluidPage(
textInput("age", "How old are you?"),
textOutput("message")
)
server <- function(input, output, server) {
message <- paste0("You are ", input$age) |> reactive({})
output$message <- renderText(message())
}
shinyApp(ui, server)
我收到这个错误:
Listening on http://127.0.0.1:4346
Warning: Error in : `env` must be an environment
56: <Anonymous>
Error : `env` must be an environment
当我像这样对服务器功能进行细微更改时,此错误已修复:
server <- function(input, output, server) {
message <- reactive({paste0("You are ", input$age, " years old")})
output$message <- renderText(message())
}
但是,我希望能够在我的 Shiny
应用程序中使用管道运算符。我在闪亮的应用程序中使用 |>
的方式有什么问题?
问题是,您将空表达式 {}
传递给 reactive
的第一个参数(x 参数:reactive(x = {})
)。
使用上面的代码,管道 |>
将其表达式传递给 reactive
的第二个参数 env
,这会导致出现错误。参见 ?reactive
这个有效:
library(shiny)
ui <- fluidPage(
textInput("age", "How old are you?"),
textOutput("message")
)
server <- function(input, output, server) {
message <- paste0("You are ", input$age) |> reactive()
output$message <- renderText(message())
}
shinyApp(ui, server)
我想在 R
的最新版本中使用管道运算符 |>
,同时使用 Shiny
进行响应式编程。例如,当我像这样在 server
函数中使用 |>
时:
library(shiny)
ui <- fluidPage(
textInput("age", "How old are you?"),
textOutput("message")
)
server <- function(input, output, server) {
message <- paste0("You are ", input$age) |> reactive({})
output$message <- renderText(message())
}
shinyApp(ui, server)
我收到这个错误:
Listening on http://127.0.0.1:4346
Warning: Error in : `env` must be an environment
56: <Anonymous>
Error : `env` must be an environment
当我像这样对服务器功能进行细微更改时,此错误已修复:
server <- function(input, output, server) {
message <- reactive({paste0("You are ", input$age, " years old")})
output$message <- renderText(message())
}
但是,我希望能够在我的 Shiny
应用程序中使用管道运算符。我在闪亮的应用程序中使用 |>
的方式有什么问题?
问题是,您将空表达式 {}
传递给 reactive
的第一个参数(x 参数:reactive(x = {})
)。
使用上面的代码,管道 |>
将其表达式传递给 reactive
的第二个参数 env
,这会导致出现错误。参见 ?reactive
这个有效:
library(shiny)
ui <- fluidPage(
textInput("age", "How old are you?"),
textOutput("message")
)
server <- function(input, output, server) {
message <- paste0("You are ", input$age) |> reactive()
output$message <- renderText(message())
}
shinyApp(ui, server)