目标:为了响应在Shiny(RStudio)中移动滑块而使图像更改大小。想想放大缩小效果。
问题:有一个错误说“basename错误(imageinfo $ src):预期的字符向量参数”。我找不到任何直接回答这个问题的东西,我不知道还有什么可以尝试的。如何将sliderInput用作server.R中的输入$ slider?
我目前的进展:我的理由是在ui.R文件中设置滑块,然后将图像的宽度作为server.R文件中的输入。
ui.R部分:
shinyUI(fluidPage(
titlePanel("Nancy's Brainstorming"),
sidebarLayout(
sidebarPanel(
h3(
strong("What is this?", style = "font-si24pt")),
p("This is a pilot project."),
sliderInput("slider",
label = "",
min = 100,
max = 300,
value = 200),
imageOutput("logo", width = 200)
)
)
))
server.R部分:
shinyServer(function(input, output) {
output$logo = renderImage({
img(src = "mylogo.png", width = input$slider)
})
})
附加信息:当我使用img(src =“mylogo.png”,width = 200)时,图像会自动显示。另外,我这样做只是为了更好地构建Shiny应用程序。
答案 0 :(得分:6)
img(src = "mylogo.png", width = input$slider)
只是返回html。您可以使用renderUI
代替renderImage
。
library(shiny)
runApp(
list(ui = fluidPage(
titlePanel("Nancy's Brainstorming"),
sidebarLayout(
sidebarPanel(
h3(
strong("What is this?", style = "font-si24pt")),
p("This is a pilot project."),
sliderInput("slider", label = "", min = 100, max = 300, value = 200),
uiOutput('logo')
),
mainPanel(
plotOutput("distPlot")
)
)
),
server = function(input, output, session) {
output$logo <- renderUI({
img(src = "http://i.stack.imgur.com/mTqXa.png", width = as.integer(input$slider))
})
}
)
)