繁体   English   中英

闪亮的文件输入R数据框

[英]shiny fileinput r dataframe

使用R Shiny,我正在开发一个简单的应用程序,允许用户输入文件中的数据。 使用csv或txt文件,一切正常,但是我无法加载R数据帧。

## SERVER.R
shinyServer(function(input, output) {
 infile <- reactive({
 infile <- input$datafile
 if (is.null(infile)) {
  # User has not uploaded a file yet
  return(NULL)
 }
 infile<load(input$datafile$datapath) 
 })

 myData <- reactive({
   df<-infile()
   if (is.null(df)) return(NULL)
 })
 output$value1 <- renderPrint({
   names(iris)
 })
 output$value2 <- renderPrint({
   names(myData())
 })
  load("iris.Rdata")   ## data loaded for testing 
})

## UI.R
shinyUI(fluidPage(
  fileInput("datafile", label = h3("File input")),
  fluidRow(column(4, verbatimTextOutput("value1"))),
  fluidRow(column(4, verbatimTextOutput("value2")))
))

当我运行此应用程序时,我可以看到仅出于测试目的而加载的虹膜数据集的名称,但请注意,所加载文件的名称(应呈现为value2)仅显示“ NULL”

有帮助吗? 提前致谢!

我想这就是你想要的。 您有几次错别字,并且您可能不太了解实际的load情况,它将一组对象加载到内存中。

我做了以下事情:

  • 添加了一些初始化代码以保存几个.Rdata进行测试,它们中都只有一个对象,即一个数据框。 代码需要这个。
  • 添加一行以解析出该加载的数据文件中的第一个对象并返回它

这是代码:

server.r

## SERVER.R

#Initialization
library(datasets)
save(iris,file="iris.Rdata")
save(mtcars,file="m.Rdata")

shinyServer(function(input, output) {
  infile <- reactive({
    infile <- input$datafile
    if (is.null(infile)) {
      # User has not uploaded a file yet
      return(NULL)
    }
    objectsLoaded <- load(input$datafile$name) 
    # the above returns a char vector with names of objects loaded
    df <- eval(parse(text=objectsLoaded[1])) 
    # the above finds the first object and returns it
    return(df)
  })

  myData <- reactive({
    df<-infile()
    if (is.null(df)) return(NULL)
    return(df)
  })
  output$value1 <- renderPrint({
    names(iris)
  })
  output$value2 <- renderPrint({
    names(myData())
  })
  load("iris.Rdata")   ## data loaded for testing 
})

ui.r

## UI.R
shinyUI(fluidPage(
  fileInput("datafile", label = h3("File input")),
  fluidRow(column(4, verbatimTextOutput("value1"))),
  fluidRow(column(4, verbatimTextOutput("value2")))
))

这是输出:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM