R Shiny中使用renderUI输出多行文本异常问题问询
核心问题原因
- 语法作用域错误:
renderUI函数的闭合大括号位置错误,拆分句子、生成HTML的逻辑被放到了renderUI的作用域之外,Shiny无法捕获到要输出的内容 - 逻辑错误:R语言中的
for循环本身没有返回值,直接将for循环传入HTML()函数不会得到拼接后的字符串,只会返回空结果
修复后代码
output$Full_text = renderUI({ my_text = my_df %>% filter(narrative_code == input$selected_narrative) %>% pull(narrative_text) # 拆分句子 my_sentences = unlist(strsplit(my_text, "(?<=(\\.|\\?)\\s)", perl = TRUE)) # 批量拼接<br/>标签,不需要for循环 HTML(paste(my_sentences, collapse = "<br/>")) })
补充说明
如果你需要每句都像示例一样包裹双引号,可以修改paste逻辑:
HTML(paste0('"', my_sentences, '"', collapse = "<br/>"))
这样输出的每句话都会独立换行,同时带双引号包裹,完全匹配你期望的展示效果。
内容的提问来源于stack exchange,提问作者aprendiz
相关产品推荐
相关产品推荐

