为啥必须创建一个中间对象来引用 R 中的 xlsx 文件?

Posted

技术标签:

【中文标题】为啥必须创建一个中间对象来引用 R 中的 xlsx 文件?【英文标题】:Why must a create an intermediary object to reference an xlsx file in R?为什么必须创建一个中间对象来引用 R 中的 xlsx 文件? 【发布时间】:2022-01-19 12:44:17 【问题描述】:

为什么下面代码中的inFile1 <- input$file1 是代码工作所必需的?

为什么我不能直接在read_excel(inFile1$datapath, 1) 中引用数据路径?


ui <- fluidPage(

fileInput('file1', 'Upload Data',accept = c(".xlsx")

)



server <- function(input, output)
 
  output$outcome <- renderDataTable(
    
    inFile1 <- input$file1
    
    read_excel(inFile1$datapath, 1)
  )


【问题讨论】:

你可以做read_excel(input$file1$datapath, 1) 【参考方案1】:

起初这让我觉得很奇怪,但fileInput 提供了其他有用的信息,除了在哪里读取临时副本(数据路径)。来自文档:

name Web 浏览器提供的文件名。这不是获取上传的实际数据的读取路径(请参阅数据路径 列)。

size上传数据的大小,以字节为单位。

type 浏览器报告的 MIME 类型(例如 text/plain),如果浏览器不知道,则为空字符串。

datapath 包含已上传数据的临时文件的路径。如果用户执行另一次上传,此文件可能会被删除 操作。

应用程序在文件中的有用信息。

正如@stefan 指出的那样,单行代码input$file1$datapath 就是直接访问该data.frame 项。

【讨论】:

以上是关于为啥必须创建一个中间对象来引用 R 中的 xlsx 文件?的主要内容,如果未能解决你的问题,请参考以下文章

R XLSX 和 XLConnect 包 - 使用 xlsx 包格式化由 XLConnect 创建的工作簿对象?

为啥我不能使用 write.xlsx 追加 [重复]

为啥自己的r语言中读不了xlsx文件

为啥对对象的第二次引用不会改变 java 中的内容?

为啥我对朋友函数有未定义的引用?

C#如何读取带密码的Excel文件