【问题标题】:Shiny App with Embedded Photo not Working带有嵌入照片的闪亮应用程序不起作用
【发布时间】:2020-09-09 14:57:38
【问题描述】:

我正在尝试完成R Studio Shiny 教程。第二个教程包括将图像嵌入到app。看起来很简单,这里的类似问答似乎使用了相同的方法:

Embedding Image in Shiny App

但是,我无法让这种方法发挥作用。这是R Studio 的第二个教程代码的精简版和我得到的结果的屏幕截图。我的工作目录中有png 文件。照片必须放在其他地方吗?

setwd('C:/Users/mark_/Documents/RShiny/')

library(shiny)

ui <- fluidPage(
  titlePanel('Shiny App with Photo'),
  sidebarLayout(
    sidebarPanel(
      h2("Installation"),
      p("Shiny is on CRAN"),
      br(),
      img(src = "myScreenshot.png", height = 70, width = 200),
      br()
    ),
    mainPanel(
      h1("Shiny"),
      p("Shiny is a package from RStudio"), 
      br()
    )
  )
)

server <- function(input, output) {

}

shinyApp(ui = ui, server = server)

编辑以添加采取的其他步骤

当我最初使用R Shiny 发布我的问题时,我使用的是默认R GUI。我已经切换到R Studio,以防R Shiny 以这种方式工作得最好。但这并没有帮助。

我已经安装了Rtools,并将以下代码添加到上述app.R文件的最顶部:

install.packages('zip')
install.packages('shinyjs')
install.packages('shinydashboard')
install.packages('shinyBS')
install.packages('shinyWidgets')

library(zip)
library(shinyjs)
library(shinydashboard)
library(shinyBS)
library(shinyWidgets)

install.packages('backports')
library(backports)
install.packages('devtools')
library(devtools)

rm(list=ls())
getwd()
setwd('C:/Users/mark_/Documents/RShiny/')
getwd()
library(shiny)

但这也无济于事。

按照下面@MattB 的建议,我在文件夹C:/Users/mark_/Documents/RShiny 中创建了一个名为www 的子文件夹,并将文件myScreenshot.png 放在该www 子文件夹中。然而,这并没有解决问题。图像仍然没有出现。

我还尝试将文件myScreenshot.png 放在RStudio 文件夹下Program Files (C:\Program Files\RStudio\www) 下的www 子文件夹中,但这没有帮助。

图片不会出现在Open in Browser 标签下或http:// 标签下。

有两个选项我还没有尝试过。也许我必须将包含app.R 文件(C:/Users/mark_/Documents/RShiny) 的文件夹的名称更改为RShiny 以外的名称。也许这让人困惑R Studio

还有另一个问题可能阻止R Studio 定位图像文件。当我安装 R 软件包时,我收到以下消息:

> install.packages('reshape2')
Installing package into ‘C:/Users/mark_/Documents/R/win-library/4.0’
(as ‘lib’ is unspecified)
also installing the dependency ‘plyr’

我最终得到了两个:

C:\Program Files\R\R-4.0.0
C:\Users\mark_\Documents\R\win-library\4.0

我想知道这是否与R Studio 无法找到图像文件有关。

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    对于应用程序用户可用的任何文件,它们需要放在应用程序文件夹内的/www 目录中。否则您无需更改代码,因为用户的浏览器会自动看到此文件夹。

    【讨论】:

    • 如果我在 RShiny 文件夹内创建一个名为 www 的子文件夹,并将文件 myScreenshot.png 放在该 www 子文件夹内,图像仍然不会出现。不过,我现在看到了您在教程中提到的建议。
    • 恐怕我不知道 - 那应该可以。当应用程序运行时,您可以尝试直接在浏览器中获取图像 - 如果可以,那么这是闪亮代码的问题,如果不能,那么由于某种原因它没有拾取图片。
    【解决方案2】:

    按照本网站上 Dean Attali @DeanAttali 的建议,我能够让 R 脚本在 R Studio 中运行并显示图像文件。

    https://deanattali.com/blog/building-shiny-apps-tutorial/

    我将文件夹重命名为 Shineexample2 并将该文件夹直接放在 Documents 文件夹中。 (C:\Users\mark_\Documents\Shineexample2) 这不是 Dean Attali 的建议之一,但以下其余部分是或至少是我如何解释他的建议。

    这个新文件夹Shineexample2 仅包含文件app.R 和包含图像文件的www 子文件夹。

    我在R Studio 中打开了app.R 文件,而不是默认的R GUI,使用File 然后Open File...

    然后我点击了R Studio GUI上方中间区域的Run App

    文件按预期运行。

    上述过程在几个方面与我之前的尝试不同。以前,app.R 文件位于具有不同名称的 folder 中,并包含许多其他 filessubfolders。通常我在Notepad 中打开文件app.R 并将其内容复制并粘贴到R Studio 中。然后我选择了所有代码并使用Code 然后Run Selected Line(s) 运行它。在访问 Dean 的网站之前,我从未注意到 R Studio Gui 顶部的 Run App 术语。

    如果我确定这些更改中的哪一个对成功执行我的代码最关键,我可能会在将来编辑此答案以提供该信息。

    以下是成功运行的app.R 文件的完整内容。

    #
    # Stack_Overflow_Shiny_question_about_embedding_images_May22_2020.R
    #
    # install.packages('shiny')
    # install.packages('zip')
    # install.packages('shinyjs')
    # install.packages('shinydashboard')
    # install.packages('shinyBS')
    # install.packages('shinyWidgets')
    # install.packages('devtools')
    # 
    
    library(shiny)
    library(zip)
    library(shinyjs)
    library(shinydashboard)
    library(shinyBS)
    library(shinyWidgets)
    
    install.packages('backports')
    library(backports)
    
    library(devtools)
    
    
    rm(list=ls())
    getwd()
    setwd('C:/Users/mark_/Documents/Shineexample2/')
    getwd()
    library(shiny)
    
    
    ui <- fluidPage(
      titlePanel('Shiny App with Photo'),
      sidebarLayout(
        sidebarPanel(
          h2("Installation"),
          p("Shiny is on CRAN"),
          br(),
          img(src = "RStudio.png", height = 70, width = 200),
          br()
        ),
        mainPanel(
          h1("Shiny"),
          p("Shiny is a package from RStudio"), 
          br()
        )
      )
    )
    
    server <- function(input, output) {
    
    }
    
    shinyApp(ui = ui, server = server)
    

    【讨论】:

      猜你喜欢
      • 2019-01-08
      • 1970-01-01
      • 2017-03-30
      • 2016-01-06
      • 1970-01-01
      • 2018-12-06
      • 2021-07-04
      • 2021-11-12
      相关资源
      最近更新 更多