2015-12-09 3 views
0

Я пытаюсь использовать shinny для печати изображения, но это не работает из-за недействительного файла. Любой плз поможет.Я не могу распечатать изображение на студии R с shinny

Выход:

Error in str(filename) : error in evaluating the argument 'object' in selecting a method for function 'str': Error: object 'filename' not found

Вот код

installed.packages("shiny") 
library(shiny) 

shinyUI(fluidPage(

titlePanel(title="Omega Engineering and Design"), 
sidebarLayout(position="left", 
    sidebarPanel(
    selectInput("drawing","choose the section: ",choices=c("wall cross section","wall cross section 2"),selected = NULL) 
    ), 

    mainPanel(("Project Avalon"), 
      imageOutput("drawing") )))) 
library(png) 
library(shiny) 


shinyServer(
    function(input,output,session){ 

output$drawing=renderImage({ 

    filename=normalizePath(file.path('./images',paste('wall',input$drawing,'.png',sep=''))) 

    if(is.null(input$drawing)) 
    return(NULL) 

    if(input$drawing=="wall cross section") 
    return(
     list(
     scr= ("C:/Users/Darren Chu/Documents/images/images/wall1.png"), 
    fileType="image/png", 
     alt=paste("Wall Cross section", input$drawing) 

     )) 

    else if(input$drawing=="wall cross section 2") 
    return(list(
     scr= ("C:/Users/Darren Chu/Documents/images/images/wall2.png"), 
fileType="image/png", 
     alt=paste("Wall Cross section", input$drawing) 

    )) 
},deleteFile = F)}) 

ответ

0

У вас есть опечатка в ваших звонков list()

list(
    scr= ("C:/Users/Darren Chu/Documents/images/images/wall1.png"), 
    fileType="image/png", 
    alt=paste("Wall Cross section", input$drawing) 
) 

должно быть src=... и не scr=....

Это ядро ​​работает:

library(shiny) 

ui <- fluidPage(
    titlePanel(title="Omega Engineering and Design"), 
    sidebarLayout(position="left", 
       sidebarPanel(
       selectInput("drawing","choose the section: ",choices=c("wall cross section","wall cross section 2"),selected = NULL) 
       ), 
       mainPanel(("Project Avalon"), 
          imageOutput("drawing") ))) 


server <- function(input,output,session){ 
    output$drawing=renderImage({ 
    filename <- normalizePath(file.path('./images',paste('wall',input$drawing,'.png',sep=''))) 

    if(is.null(input$drawing)) 
     return(NULL) 

    if(input$drawing=="wall cross section") 
     return(
     list(
      src=("Test.png"), 
      fileType="image/png", 
      alt=paste("Wall Cross section", input$drawing) 

     )) 

    else if(input$drawing=="wall cross section 2") 
     return(list(
     src= ("Test2.png"), 
     fileType="image/png", 
     alt=paste("Wall Cross section", input$drawing) 

    )) 
    },deleteFile = F)} 

shinyApp(ui, server) 
Смежные вопросы