使用文件输入小部件上传 csv 文件时出错

Posted

技术标签:

【中文标题】使用文件输入小部件上传 csv 文件时出错【英文标题】:Error when uploading csv file with file input widget 【发布时间】:2021-07-31 03:52:30 【问题描述】:

原创 当我尝试上传我的 csv 文件时,我收到一条错误消息,指出“输入字符串 7 在此语言环境中无效”。我尝试使用 encoding="UTF-8" 和 encoding="UTF-16LE"。我使用 UTF-16LE 是因为我研究了这是用于 csv 文件的编码。但是,我仍然遇到错误消息。我不确定如何检查 csv 文件的编码。

更新: 当我使用 fileEncoding = "UTF-8" 时,我可以上传我的文件。但是,应用程序无法识别行和列。

library(shiny)

ui <- fluidPage(
  
  navbarPage("Dashboard",
             
             tabPanel(title = "Model",
                      sidebarLayout(
                        sidebarPanel(
                          
                          fileInput("file1", "Choose .csv file", #add red asterisks to make this mandatory
                                    accept = c(
                                      "text/csv",
                                      "text/comma-separated-values,text/plain",
                                      ".csv"),
                          ),    
                          
                        ),
                        
                        mainPanel(
                          tabsetPanel(
                            tabPanel("Data",
                                     tableOutput("tableOne"))
                            
                          )
                        )    
                      )    
             )
  )
)

server <- function(input,output)
  
  data <- reactive(
    req(input$file1)
    file1 <- input$file1
    if(is.null(file1))return()
    read.table(file=file1$datapath, fileEncoding = "UTF-8")
    
  )
  
 
  
  output$tableOne <- renderTable(
    req(input$file1)
    if(is.null(data()))return ()
    data()
  )
  
  #output$data <- renderTable(output$tableOne)
  



shinyApp(ui,server)

【问题讨论】:

你能查一下this @akrun 我去保存文件时能够找到文件的编码。但是,现在它无法识别行和列。 不识别行和列是什么意思。是否弄乱了分隔符 @akrun 我在上面提供了一张照片,可能是分隔符问题。 您的read.table 没有为sep 提供任何分隔符。我认为这可能是问题所在,因为它可能正在检查您保存数据时删除的空格字符 【参考方案1】:

问题是在保存数据时分隔符从空格更改为,。所以,OP的代码

 read.table(file=file1$datapath, fileEncoding = "UTF-8")

正在寻找sep中的默认空间没有找到。

我们可以把那行改成

read.csv(file = file1$datapath, fileEncoding = "UTF-8")

或使用read.table 和额外的sep

read.table(file=file1$datapath, fileEncoding = "UTF-8", sep=",")

【讨论】:

以上是关于使用文件输入小部件上传 csv 文件时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 Kendo 上传小部件以隐藏文件列表

如何在使用 Cloudinary UI 小部件时跳过 Cloudinary 弹出窗口进行上传

Cloudinary 的上传小部件 v2 中存在多个文件的问题 [关闭]

如何将从文件上传小部件上传的假脱机文件传递到 C FILE *f 指针

AppMaker 和选择器小部件 - 上传到特定文件夹

带有媒体上传按钮的自定义Wordpress窗口小部件,在每个窗口小部件上插入相同的图像