Shiny中input$变量名无法获取fileInput值,直接调用ID正常求解
解决Shiny中动态获取fileInput内容的问题
我来帮你搞定这个问题~你遇到的情况其实是Shiny里input对象的访问方式导致的:
问题原因
在Shiny中,input是一个反应式列表对象。当你用input$curFileID的时候,R会把curFileID当成input里的一个字面量键名(也就是它会直接去找input里叫"curFileID"的元素),而不是把curFileID变量的值(比如循环里的"file1")作为键名去查找,所以自然返回空值。而直接写input$file1时,你用的是input里实际存在的键名,所以能正常拿到文件信息。
解决方案
改用列表的方括号索引方式input[[curFileID]],这样R会先解析curFileID变量的实际值,再去input列表里匹配对应的键。修改后的代码如下:
for (machine in 1:machineCount) { curFileID <- paste0("file", machine) print(paste0("Current File ID: ", curFileID)) # 使用[[ ]]来动态访问input元素 print(paste0("Current File ID input accessed through variable: ", input[[curFileID]])) print(paste0("Current File ID input accessed directly through variable name:", input$file1)) }
这样循环里就能正确获取每个动态生成的fileInput的内容了,这种写法在处理批量、动态生成的Shiny输入组件时非常常用~
内容的提问来源于stack exchange,提问作者Fabmaur
相关产品推荐
相关产品推荐

