我有一个使用read.xlsx包中的功能的Shiny应用程序xlsx.所有工作正常,但我想更改为read_excel从readxl,希望这将是更快,能够应付大容量文件.
你的部分:
fileInput("inputFile","Upload file...")
Run Code Online (Sandbox Code Playgroud)
服务器部分:
data <- reactive({
inFile <- input$inputFile
if (is.null(inFile)) { return(NULL) }
dataFile <- read_excel(inFile$datapath,sheet=1)
return(dataFile)
})
Run Code Online (Sandbox Code Playgroud)
我收到"未知格式"错误.
inFile $ datapath是"
/tmp/.../60974676c7287e913d1c0dc5/0"inFile $ type是"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
问题1:有没有办法告诉read_excel它是xlsx类型的文件?
问题2:是否可以控制上传文件的存储位置?
我想创建一个只有两列的新数据表,并使用这两列作为键将其与另一个表连接.我能做到这一点:
a.dt <- data.table(x = 1:3, y = 2:4)
setkey(a.dt,x,y)
key(a.dt)
# [1] "x" "y"
# ...(join)
Run Code Online (Sandbox Code Playgroud)
但我不想使用setkey- 我想立即链接到连接,即在创建表之后我想要keyby两个新变量.由于我不清楚的原因,我收到此错误:
a.dt <- data.table(x = 1:3, y = 2:4)[, .SD, keyby = .(x,y)]
# Error in jsub[[ii]] : attempt to select less than one element
Run Code Online (Sandbox Code Playgroud)
这是我丑陋的解决方法
a.dt <- data.table(x = 1:3, y = 2:4, z = 3:5)[, .SD, keyby = .(x,y)][,z := NULL]
key(a.dt)
# [1] "x" "y"
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么我不能keyby同时变量?我做的事情从根本上是愚蠢的吗?
编辑:为完整性添加会话信息
sessionInfo()
# R version 3.2.1 (2015-06-18) …Run Code Online (Sandbox Code Playgroud)