在 Shiny R 中检索文件信息(名称、大小、行数和列数)
Retrieve file information (name, size, rows and cols number) in Shiny R
我需要一个闪亮的应用程序来检索一些文件信息,如文件名、大小、行数和列数。我的最终想法是构建一个自动显示元数据的框,如果我导入另一个数据集,它也会更新。原始代码我找到了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)
我们需要读取数据集才能得到 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 <- 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
组合成一个,然后 return 一个 list
具有 3 个元素 - 1) 文件名,2) 文件大小 3)维度
我知道你说你想要一个 R 解决方案,但我认为如果你只考虑这个,你的选择是非常有限的。 Excel-VBA 解决方案怎么样。转到下面的 link 并下载示例文件。这应该可以满足您的所有需求,甚至更多。
http://learnexcelmacro.com/wp/2011/11/how-to-get-list-of-all-files-in-a-folder-and-sub-folders/
我需要一个闪亮的应用程序来检索一些文件信息,如文件名、大小、行数和列数。我的最终想法是构建一个自动显示元数据的框,如果我导入另一个数据集,它也会更新。原始代码我找到了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)
我们需要读取数据集才能得到 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 <- 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
组合成一个,然后 return 一个 list
具有 3 个元素 - 1) 文件名,2) 文件大小 3)维度
我知道你说你想要一个 R 解决方案,但我认为如果你只考虑这个,你的选择是非常有限的。 Excel-VBA 解决方案怎么样。转到下面的 link 并下载示例文件。这应该可以满足您的所有需求,甚至更多。
http://learnexcelmacro.com/wp/2011/11/how-to-get-list-of-all-files-in-a-folder-and-sub-folders/