You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Shiny单选按钮中渲染文本字段?代码报错求助

解决Shiny单选按钮翻译的语法错误问题

我来帮你搞定这个Shiny单选按钮的翻译问题!你遇到的语法错误,核心原因是不该在radioButtons的choices参数里用renderText()来给选项命名。

错误原因解析

radioButtons的choices参数需要的是一个命名向量:向量的名字是前端显示的选项文本,向量的值是后台用来判断选中状态的标识。而renderText()是Shiny专门用来渲染动态UI输出的函数,它不能直接作为向量的名字使用,这才导致了代码里的unexpected '='语法错误。

另外你的label参数里也没必要套renderText()——如果tr()函数是直接返回翻译后的字符串(通过CSV字典匹配),直接用tr()的结果作为标签文本就足够了。

修正后的代码

直接把renderText({tr("xxx")})替换成tr("xxx"),用翻译后的字符串直接作为选项的显示文本:

radioButtons(
  "enc",
  label = tr("Select encoding in case your data presents strange characters:"),
  choices = c(
    tr("Automatic") = "unknown",
    tr("UTF-8") = "UTF-8",
    tr("Windows") = "Latin-1"
  ),
  selected = "unknown",
  inline = TRUE
)

补充说明

如果你的tr()函数确实是返回对应翻译字符串的工具函数(比如从CSV字典中匹配术语),那这个写法完全能满足需求:前端会显示翻译后的选项文本,后台获取到的选中值还是你设置的"unknown"、"UTF-8"这些标识,逻辑完全通顺。

要是之后你需要动态更新选项的翻译文本(比如切换语言时实时改变),那才需要用到renderUI()配合uiOutput()来动态生成radioButtons,但目前静态翻译的场景下,上面的代码就足够解决问题啦。

内容的提问来源于stack exchange,提问作者Joni Hoppen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:25:37