我有一个大的闪亮的应用程序与大约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或编程一无所知,只是试图优化我的程序,因为它随着每个新的“功能”变慢我加 .
1 回答
我没有看到保持这样的设置有任何问题,但可能有更好的方法,并且在任何情况下我都会将它包装在像我这里所做的那样的函数中 .
这里是你如何实现只写"on exit"(也请注意
session
参数,通常不使用):请注意,我正在将
ui.R
和server.R
文件压缩为单个文件,这通常不会完成,但对于这些小例子更好 .这不是完美的代码,我没有读取设置并初始化变量,我使用
<<-
运算符,有些人皱眉 . 但它应该可以帮助你 .更新
这是一个更复杂的版本,可以加载和保存参数,并封装它们以供使用 . 它更好,虽然它可能应该使用S3对象......
产量: