我有一个简单的Shiny应用程序,可以绘制一些数据。该应用程序运行一个函数,接受5个参数并绘制结果。
4个参数通过滑块传递,它们都工作正常,但第5个参数是文本字符串。
从我的用户界面剪辑:
selectInput("subsec", "Subsections",
c("Pies", "Milk", "Salad", "Bread"),
selected = TRUE, multiple = FALSE,
selectize=FALSE)
其中' subsec'是我想传递给我的函数的变量。
从我的服务器剪断:
Price_Score(input$s_ranks[1], input$s_ranks[2],
input$s_index[1], input$s_index[2], input$subsec[1])
这似乎不起作用,没有任何情节,但如果我手动输入文字字符串如下,它可以正常工作
Price_Score(input$s_ranks[1], input$s_ranks[2],
input$s_index[1], input$s_index[2], Milk)
如何将字符串传递过来?
在我的R函数中我确实将变量的大小写改为小写
sect <- tolower(deparse(substitute(sect)))
下拉列表中的某些说明也包含空格,例如太空侵略者。如何将带空格的字符串传递给我的函数?
在我的函数中,我有一些代码根据4个数字参数操作数据,第5个参数是字符串,过滤图表的数据表。绘制图表的代码如下:
plot <- (ggplot(data, aes(rank, Move_Curve)) +
geom_line(size = 2, color = "blue") +
scale_y_continuous(breaks = seq(0, x_axis_max + x_axis_incriment, x_axis_incriment)) +
scale_x_continuous(breaks = seq(0, 20000 + 2000, 500)) +
geom_point(data = data[section_lower == sect
& `Price Index` > 0, .(rank, `Price Index`)], aes(y = `Price Index`)) +
labs(title = "Price Score Optimisation", x = "Product Rank", y = "Optimal Index")
)
return(plot)
&#39;教派&#39;变量是我想传递给函数的sting,以便能够过滤数据表。
答案 0 :(得分:0)
这是一个用空格传递字符串的选项:
selectInput("subsec", "Subsections",
choices = list("Space invaders" = "space_invaders", "Pies" = "pies"))
尝试从[1]
删除input$subset
以使第一个位工作。
答案 1 :(得分:0)
这个MVE对我来说没问题,正如所料:
library(shiny)
ui <- fluidPage(
selectInput(inputId = "subsec", "Subsections",
c("Pies", "Milk", "Salad", "Bread"),
selected = TRUE, multiple = FALSE,
selectize=FALSE),
textOutput("text")
)
server <- function(input, output) {
output$text <- renderText({
sect <- tolower(input$subsec)
# Apply a function to the selected value
paste0('The answer is: ', sect)
})
}
# Run the application
shinyApp(ui = ui, server = server)
需要注意的是:
deparse(substitute())
Price_Score
函数,而是传递对象Milk
。答案 2 :(得分:0)
如果没有看到公式,很难提出任何建议。围绕as.symbol()
包裹input$subsec
是否有效?
Price_Score(input$s_ranks[1], input$s_ranks[2], input$s_index[1], input$s_index[2], as.symbol(input$subsec))