背景故事:对于我的项目,我正在制作一个仪表板,可以轻松访问酒店信息。现在,我希望它的工作原理是,如果评分高于9,则评分为4.5星。如果高于8,则获得4星。等等。现在我不是代码神,所以走这么远已经花了我很多时间,但是如果我查看各种不同的tag $ img代码,它们看起来都像我固定了一样。但这不会显示图像。我的代码有什么问题?
问题:尽管我在代码中填入了4星等的部分,但该部分不起作用。我什至在控制台中检查了它。它根据酒店得分选择.PNG文件的部分会给出正确的文件,并像“ $ 5stars.png”一样将其返回,如tag $ img需要。我什至制作了这样的小代码:tags $ img(src =“ 5stars.png”,height = 50,width = 200)确实可以那样工作,但是我希望它是“反应性的”,因此它显示了不同的图像对于不同的评级。那么,即使控制台说它用正确的文本替换了textOutput(“ hotelImage”),为什么它也不起作用?
我的身体代码是:
tags$img(src = textOutput("hotelImage"), height = 50, width = 200)
textOutput的决定如下:
output$hotelImage <- renderText({
if(ratingGiver() > 9){
'"5stars.png"'
}else if (ratingGiver() > 8) {
'"45stars.png"'
}else if (ratingGiver() > 7) {
'"4stars.png"'
}else if (ratingGiver() > 6) {
'"35stars.png"'
}else if (ratingGiver() > 5) {
'"3stars.png"'
}else if (ratingGiver() > 4) {
'"25stars.png"'
}else if (ratingGiver() > 3) {
'"2stars.png"'
}else if (ratingGiver() > 2) {
'"15stars.png"'
}else if (ratingGiver() > 1) {
'"1stars.png"'
}else{
'"0stars.png"'
}
})
我尝试了所有可能的方法,从反应式到renderImage。可能错过了一些,但我确实很想找。
我的期望是,对于我选择的酒店,它会经过if并选择正确的位置,然后以src =“ 5stars.png”填充正确的文件路径,然后将加载图像。使用此代码,它应该可以工作,因为我检查了一下,并将其粘贴到了textOutput(“ hotelImage”)位上的“ 5stars.png”。我通过输入textOutput(“ hotelImage”)进行检查。但是由于某种原因,它仍然给我X图像。什么不对?它粘贴了正确的内容。我需要其他代码吗?
编辑:
经过一番评论,我得到了将Reactive与renderImage一起用于plotOutput的建议。然后我尝试了: 在下面,您可以看到我为此所做的反应。
ReactiveImage <- reactive({
if(ratingGiver() > 9){
'"5stars.png"'
} else if (ratingGiver() > 8) {
'"45stars.png"'
}else if (ratingGiver() > 7) {
'"4stars.png"'
}else if (ratingGiver() > 6) {
'"35stars.png"'
}else if (ratingGiver() > 5) {
'"3stars.png"'
}else if (ratingGiver() > 4) {
'"25stars.png"'
}else if (ratingGiver() > 3) {
'"2stars.png"'
}else if (ratingGiver() > 2) {
'"15stars.png"'
}else if (ratingGiver() > 1) {
'"1stars.png"'
}else{
'"0stars.png"'
}
})
在下面,您可以看到renderImage的输出:
output$RenderImage2 <- renderImage({
tags$img(src = ReactiveImage(), height = 50, width = 200)
})
以及正文代码:
plotOutput("RenderImage"),
遗憾的是,以上代码似乎都无法解决我的问题。我也尝试将其放入observeEvent中,以查看是否可行。没错,但是我还是会显示代码,因为也许是窍门,但我犯了一个错误:
observeEvent(input$hotelMap_marker_click[[1]], { output$RenderImage2 <-
renderImage({
tags$img(src = ReactiveImage(), height = 50, width = 200)
})
})
答案 0 :(得分:0)
答案
经过一番搜索,我最终得到了这一点: 服务器:
output$Imagen <- renderImage({
if(ratingGiver() > 9){
Leg <- "www/5stars.png"
} else if (ratingGiver() > 8) {
Leg <- "www/45stars.png"
}else if (ratingGiver() > 7) {
Leg <- "www/4stars.png"
}else if (ratingGiver() > 6) {
Leg <- "www/35stars.png"
}else if (ratingGiver() > 5) {
Leg <- "www/3stars.png"
}else if (ratingGiver() > 4) {
Leg <- "www/25stars.png"
}else if (ratingGiver() > 3) {
Leg <- "www/2stars.png"
}else if (ratingGiver() > 2) {
Leg <- "www/15stars.png"
}else if (ratingGiver() > 1) {
Leg <- "www/1stars.png"
}else{
Leg <- "www/0byebitchgone.png"
}
list(src=Leg, height = 90, width = 380)
}, deleteFile = FALSE)
身体:
imageOutput(outputId="Imagen")