我需要一个闪亮的应用程序来检索一些文件信息,如文件名,大小,行数和列数。我最后的想法是构建一个自动显示元数据的框,如果我导入另一个数据集,它也会更新。我发现原始代码here,但我尝试修改。有帮助吗?我是Shiny R的新人。
ui <- fluidPage(
titlePanel("Grabbing my file name"),
sidebarLayout(
sidebarPanel(
fileInput("file1", "Select your file",
multiple = FALSE,
accept = c("text/csv",
"text/comma-separated-values,text/plain",
".csv",".xlsx")),
),
mainPanel(
textOutput("myFileName"),
textOutput("myFileSize"),
textOutput("myFileRow"),
textOutput("myFileCol"),
)
)
)
server <- function(input, output) {
file_name <- reactive({
inFile <- input$file1
if (is.null(inFile)){
return(NULL)
}else{
return (inFile$name)
}
})
output$myFileName <- renderText({ file_name() })
file_size <- reactive({
inFile <- input$file1
if (is.null(inFile)){
return(NULL)
}else{
return (file.size(inFile$name))
}
})
output$myFileSize <- renderText({ file_size() })
file_row <- reactive({
inFile <- input$file1
if (is.null(inFile)){
return(NULL)
}else{
return (nrow(inFile))
}
})
output$myFileRow <- renderText({ file_row() })
file_col <- reactive({
inFile <- input$file1
if (is.null(inFile)){
return(NULL)
}else{
return (ncol(inFile))
}
})
output$myFileCol <- renderText({ file_col() })
}
# Run the application
shinyApp(ui = ui, server = server)
答案 0 :(得分:1)
我们需要读取数据集才能获得ncol/nrow
。读取数据并获得ncol/nrow
(我们使用dim
来获取数据而不是重复ncol/nrow
会更有效。
library(shiny)
-ui
ui <- fluidPage(
titlePanel("Grabbing my file name"),
sidebarLayout(
sidebarPanel(
fileInput('file1', 'Select your file',
accept = c(
'text/csv',
'text/comma-separated-values',
'.csv'
)
)
),
mainPanel(
textOutput("myFileName"),
textOutput("myFileSize"),
textOutput("myFileColrow")
)
)
)
-server
server <- function(input, output) {
file_name <- reactive({
inFile <- input$file1
if (is.null(inFile))
return(NULL) else return (tools::file_path_sans_ext(inFile$name))
})
file_colrowsize <- reactive({
inFile <- input$file1
if (is.null(inFile)){
return(NULL)
}else{
tmp <- read.csv(inFile$datapath)
return (list(dim(tmp), object.size(tmp)))
}
})
output$myFileName <- renderText({ file_name() })
output$myFileColrow <- renderText({ file_colrowsize()[[1]] })
output$myFileSize <- renderText({file_colrowsize()[[2]]})
}
- 运行应用程序
shinyApp(ui = ui, server = server)
正在运行的输出
注意:我们也可以将两个reactive
合并为一个,然后返回list
个3个元素 - 1)文件名,2)文件大小3)尺寸
答案 1 :(得分:0)
我知道你说你想要一个R解决方案,但我认为你的选择非常有限,如果你只考虑这个。如何使用Excel-VBA解决方案。转到下面的链接并下载示例文件。这应该做你想要的一切,还有更多。
http://learnexcelmacro.com/wp/2011/11/how-to-get-list-of-all-files-in-a-folder-and-sub-folders/