闪亮 - 无需用户交互即可导入和导出,只需指定一个文件及其路径
Shiny - importing and exporting without user interaction by only specifying one file and its path
我看到的所有闪亮教程都通过 fileInput()
手动导入多个数据,然后手动导出。
目前,我只有一个 R 脚本文件,我每次 运行 手动更改几个变量。
例如,在目录 C:/Users/Users/Project/000-0000
中,我想使用来自 000-0000_NewData
.
的信息更新 000-0000_result1
和 000-0000_result2
#### Variables I change
file_name <- "C:/Users/Users/Project/000-0000/000-0000_NewData.csv"
parameterNum <- 3
#### Rest of the codes that I never change
setwd(dirname(file_name)
projectID <- str_extract(file_name, "[^_]+") #would be 000-0000 in this case
dat0 <- read_csv(file_name)
prev_result1 <- read_csv(str_c(projectID, "_result1"))
prev_result2 <- read_csv(str_c(projectID, "_result2"))
... #data step using parameterNum
write_csv(new_result1, str_c(projectID, "_result1"))
write_csv(new_result2, str_c(projectID, "_result2"))
我想创建一个闪亮的应用程序,我可以在其中指定 file_name
和 fileInput("dat0","Upload a new data")
和 numericInput()
然后 运行 脚本的其余部分。
我不想手动 select 多个文件然后导出它们,因为我有很多 _result
文件与共享相同文件类型的其他文件混合在一起。
我正在查看 input$dat0$datapath
,但 shiny 似乎创建了一个 tmp 文件夹,其中仅包含通过 fileInput()
加载的文件
我的计划可以使用 Shiny 吗?我正在使用 flexdashboard,但我也欢迎并将尝试自己调整标准的 Shiny 答案。
也许是这样的:
library(shiny)
library(tidyverse)
ui <- fluidPage(
textInput('file_name', 'Path to filename', value = "C:/Users/Users/Project/000-0000/000-0000_NewData.csv"),
numericInput('parameterNum', 'Insert Parameter Number',value = 3, min = 0),
actionButton(inputId = 'save', label = 'Write csvs')
)
server <- function(input, output, session) {
observe({
setwd(dirname(input$file_name))
})
projectID <- reactive({
str_extract(inpt$file_name, "[^_]+")
})
prev_result1 <- reactive({
read_csv(str_c(projectID(), "_result1"))
#some calculation
})
prev_result2 <- reactive({
read_csv(str_c(projectID(), "_result2"))
#some calculation
})
observeEvent(input$save, {
write_csv(prev_result1(), str_c(projectID(), "_result1"))
write_csv(prev_result2(), str_c(projectID(), "_result2"))
})
}
shinyApp(ui, server)
我看到的所有闪亮教程都通过 fileInput()
手动导入多个数据,然后手动导出。
目前,我只有一个 R 脚本文件,我每次 运行 手动更改几个变量。
例如,在目录 C:/Users/Users/Project/000-0000
中,我想使用来自 000-0000_NewData
.
000-0000_result1
和 000-0000_result2
#### Variables I change
file_name <- "C:/Users/Users/Project/000-0000/000-0000_NewData.csv"
parameterNum <- 3
#### Rest of the codes that I never change
setwd(dirname(file_name)
projectID <- str_extract(file_name, "[^_]+") #would be 000-0000 in this case
dat0 <- read_csv(file_name)
prev_result1 <- read_csv(str_c(projectID, "_result1"))
prev_result2 <- read_csv(str_c(projectID, "_result2"))
... #data step using parameterNum
write_csv(new_result1, str_c(projectID, "_result1"))
write_csv(new_result2, str_c(projectID, "_result2"))
我想创建一个闪亮的应用程序,我可以在其中指定 file_name
和 fileInput("dat0","Upload a new data")
和 numericInput()
然后 运行 脚本的其余部分。
我不想手动 select 多个文件然后导出它们,因为我有很多 _result
文件与共享相同文件类型的其他文件混合在一起。
我正在查看 input$dat0$datapath
,但 shiny 似乎创建了一个 tmp 文件夹,其中仅包含通过 fileInput()
我的计划可以使用 Shiny 吗?我正在使用 flexdashboard,但我也欢迎并将尝试自己调整标准的 Shiny 答案。
也许是这样的:
library(shiny)
library(tidyverse)
ui <- fluidPage(
textInput('file_name', 'Path to filename', value = "C:/Users/Users/Project/000-0000/000-0000_NewData.csv"),
numericInput('parameterNum', 'Insert Parameter Number',value = 3, min = 0),
actionButton(inputId = 'save', label = 'Write csvs')
)
server <- function(input, output, session) {
observe({
setwd(dirname(input$file_name))
})
projectID <- reactive({
str_extract(inpt$file_name, "[^_]+")
})
prev_result1 <- reactive({
read_csv(str_c(projectID(), "_result1"))
#some calculation
})
prev_result2 <- reactive({
read_csv(str_c(projectID(), "_result2"))
#some calculation
})
observeEvent(input$save, {
write_csv(prev_result1(), str_c(projectID(), "_result1"))
write_csv(prev_result2(), str_c(projectID(), "_result2"))
})
}
shinyApp(ui, server)