必须写入的文本必须是一个长度为一的字符向量。

9

在安装新版本的shiny(1.4.0)包后,我遇到了一个奇怪的错误消息。

> Warning: Error in writeImpl: Text to be written must be a length-one
> character vector   [No stack trace available]

我不太明白发生了什么改变?该如何解决这个问题?

非常感谢任何建议!

跟踪信息如下:

13: execCallbacks(timeoutSecs, all, loop$id)
12: force(expr)
11: with_loop(loop, invisible(execCallbacks(timeoutSecs, all, loop$id)))
10: run_now(timeoutMs/1000, all = FALSE)
9: service(timeout)
8: serviceApp()
7: ..stacktracefloor..(serviceApp())
6: withCallingHandlers(expr, error = doCaptureStack)
5: domain$wrapSync(expr)
4: promises::with_promise_domain(createStackTracePromiseDomain(), 
       expr)
3: captureStackTraces({
       while (!.globals$stopped) {
           ..stacktracefloor..(serviceApp())
       }
   })
2: ..stacktraceoff..(captureStackTraces({
       while (!.globals$stopped) {
           ..stacktracefloor..(serviceApp())
       }
   }))
1: runApp("Projects/Bomboleo")

No traceback available 

7
这个错误出现在htmltools::WSTextWriter中(参见此处,并使用CTRL+F查找“writeImpl”)。该函数负责在任何UI函数中显示原始文本时正确地将文本写入您的显示器。当writeImpl()函数接收到多个字符字符串(即character()向量的元素)时,它会引发上述错误。要纠正这个问题,请确保您从不向要求一个字符参数的Shiny UI函数提供两个字符字符串。 - Elie Ker Arno
1
谢谢。请参考 github.com/rstudio/htmltools #147: WSTextWriter does not handle multiple character values。我使用了 tags$tr(HTML(paste0(myvar,collapse=""))) - phili_b
我曾经遇到过类似的问题,后来发现我使用了标准的Shiny textInput控件并将多个字符串作为默认参数(value)给出。 - knowah
与此类似的问题是:tags$div(class=c("a","b"),"a")。应该写成 tags$div(class="a b","a") - fxi
3个回答

2

我的代码中有一行是这样的:c("text/csv","text/comma-separated-values,text/plain",".csv")。它会创建一个问题,因为它传递了三个文本参数。
因此,我将其重写为c(".csv"),现在它只传递一个文本!我的Shiny应用程序中不再出现错误了!!

这个错误只发生在UI部分。


1
如果您在shiny应用程序中使用dataTable显示表格,就像我一样,您会发现一些样式限定符与输出冲突,导致错误。对于我自己来说,一旦我从dataTable的样式选项中删除了'overflow-x: scroll',一切都正常工作并在应用程序中正确呈现。

0

我曾经遇到同样的问题,但是在尝试去掉一些逗号后面的空格后,它最终为我工作了!所以我的建议是重新构建你的代码,R 可能由于某些代码行末尾的空格而无法识别它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接