【发布时间】:2015-12-28 00:45:13
【问题描述】:
我有一个闪亮的大应用程序,有大约 60 种不同的输入,而且它还在不断增长。因为我经常使用这个程序,所以我希望将这些设置保存到下次运行该应用程序时。我制作了一个看起来像这样的 csv 文件:
input,value
input_a,10
input_b,#FFF000
input_c,hide
input_d,65400
我在 ui.R 和 server.R 中加载 csv 文件(不知道为什么我必须加载两次...)
config <- data.frame(lapply(read.csv(".//config.csv"), as.character), stringsAsFactors = FALSE)
并且有这样的输入
sliderInput(
"input_a",
"Number of cats:",
min = 1,max = 50,
value = config[config$input %in% "input_a", "value"]
)
在 server.R 中,我让输入更改替换表中的值并将表保存到文件中
observe({
config[config$input %in% "input_a", "value"] <- input$input_a
config[config$input %in% "input_b", "value"] <- input$input_b
config[config$input %in% "input_c", "value"] <- input$input_c
config[config$input %in% "input_d", "value"] <- input$input_d
write.table(config, file = ".//config.csv", col.names = TRUE, row.names = FALSE, quote = FALSE, sep = ",")
})
我确信有更好的方法可以做到这一点,我搜索并检查了其他类似的问题,我从 dget 和 dput 开始,但后来决定将所有相关设置放在一个简单的文件中。抱歉,如果我在搜索时错过了最相关的问题。
我不喜欢的是,在我进行任何输入更改之前,程序在加载程序时也会保存表格。
如何在每次运行程序时摆脱不必要的保存? 我不了解闪亮的所有“反应性”,对我来说仍然有点复杂,我对 R 或编程一无所知,只是试图优化我的程序,因为每个新的“功能”都会变慢我补充。
【问题讨论】:
-
如果你打算用 Shiny 写作,最好习惯反应性。没有办法解决它,你越早得到它,你的痛苦就越少。我建议多读几遍文档并编写非常小的程序来玩,看看它是如何工作的。