r - 闪亮:textInput 在 R 中没有响应
问题描述
我编写的代码使情节变得闪亮。正如您在代码中看到的那样,当我使用 plot(c(12,11)) 时,我得到了图,但是当我使用 plot(c(input$ vec)) 或 plot(input$ vec) 时,我并没有改变地块。
library(shiny)
library(ggplot2)
library(dplyr)
library(purrr)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
textInput('vec', 'Enter a vector (comma delimited)', "0,1")
),
mainPanel(
plotOutput(outputId = "distPlot"),
)
)
)
server <- function(input, output) {
output$distPlot <- renderPlot({
qo <- function(x,m) {
p<-x^3+m^3
return(p)
}
plot <- function(m) {
ggplot(tibble(x = c(-10, 20)), aes(x)) +
map(m,
~stat_function(fun = qo, aes(color = paste0("heat ", .)), args=list(m = .)))
}
plot(c(12,11))
})
}
shinyApp(ui,server)
解决方案
问题是这input$vec
是一个字符串。要在函数中使用输入,您首先必须将字符串拆分为单个数字并转换为数字,例如使用vec <- as.numeric(trimws(unlist(strsplit(input$vec, split = ","))))
. 在这里,我首先使用 拆分字符串,,
使用strsplit
将结果列表转换为向量unlist
,通过删除空格trimws
,最后转换为数字。
之后,您可以应用您的功能:
library(shiny)
library(ggplot2)
library(dplyr)
library(purrr)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
textInput('vec', 'Enter a vector (comma delimited)', "0,1")
),
mainPanel(
plotOutput(outputId = "distPlot"),
)
)
)
server <- function(input, output) {
output$distPlot <- renderPlot({
qo <- function(x,m) {
p<-x^3+m^3
return(p)
}
plot <- function(m) {
ggplot(tibble(x = c(-10, 20)), aes(x)) +
map(m,
~stat_function(fun = qo, aes(color = paste0("heat ", .)), args=list(m = .)))
}
vec <- as.numeric(trimws(unlist(strsplit(input$vec, split = ","))))
plot(vec)
})
}
shinyApp(ui,server)
推荐阅读
- java - 如何获取 SPARQL-DL 查询中使用的所有实体?
- python-3.7 - python条件格式替换
- postgresql - Postgres错误错误:右兄弟的左链接不匹配
- python - Python 对有序字典和生成的 .items() 迭代器进行排序
- azure - 名称中带有哈希的文件的 Web.config 规则
- python - flask_migrate BIGINT 列长度在 MySQL 中第一次被忽略
- nginx - nginx反向代理位置
- python - 有没有办法在重新采样的日期索引熊猫数据框中产生多个类别的计数?
- go - MarshalBinary time.Time:预测其字节大小
- python - Python - 使用循环删除多个文本文件的关键字后的部分