R语言中dlgInput返回GUI对象转dataframe报错求助
svDialogs弹窗输入转DataFrame报错解决办法
问题场景
你用svDialogs包的dlgInput()创建弹窗让用户输入01-09的代码,直接把返回结果转成DataFrame时触发报错,报错信息翻译后如下:
Error in as.data.frame.default(x[[i]], optional = TRUE) :
无法自动将‘c("nativeGUI", "textCLI", "gui", "environment")’转换为数据框(data.frame)
问题根源
dlgInput()返回的不是单纯的用户输入文本,而是一个包含弹窗类型、运行环境、输入结果等内容的列表对象。直接把整个列表转DataFrame,R没法处理列表里的非数据类元素,所以报错。
解决步骤
你需要先提取列表里的用户输入结果(存在$res属性里),再转成DataFrame:
library(svDialogs) # 弹出输入弹窗 test <- dlgInput("Veuillez entrer un code essence") # 提取用户输入内容,转为DataFrame test2 <- data.frame(code = test$res) # 查看最终结果 test2
额外优化
如果用户点击弹窗的「取消」按钮,test$res会返回NULL,可以加个判断避免空值报错:
library(svDialogs) test <- dlgInput("Veuillez entrer un code essence") if (!is.null(test$res)) { test2 <- data.frame(code = test$res) print(test2) } else { message("用户取消了输入操作") }
内容的提问来源于stack exchange,提问作者Alan Vega
相关产品推荐
相关产品推荐

