我正在尝试从数据帧中读取一个值,该值最终将每2分钟更新一次。现在,我正在努力通过htmltemplate将数据以闪亮的方式传递到UI。
我尝试了render和outputUI的各种实现,但似乎无法弄清楚。
$
我想看到的是UI中呈现的这4个数字的平均值。
当前代码将我的对象放入div中,这不是我想要的
^([1-9][0-9]{2,6}|99)$
答案 0 :(得分:1)
首先,代码没有在我的机器上运行,只是灰页...很奇怪。
第二个outputUI无效,您使用的是哪个闪亮版本?
我用:
uiOutput()
第三,我认为您的输出看起来正确,您已经告诉renderUI它应包含的内容(一个render元素),例如
renderUI({
tagList(
renderText(
mean( my_dataframe$score)
)
)
})
编辑: 一些缺少的依赖项。这里添加了具有某些依赖项的完整工作代码:
library(shiny)
test_date <- as.Date(c('2019-01-01','2019-01-02','2019-01-03','2019-01-04'))
score <- c(75,80,85,90)
my_dataframe <- data.frame(test_date, score)
ui <- htmlTemplate(
text_ = '
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script type="application/shiny-singletons"></script>
<script type="application/html-dependencies">
json2[2014.02.04];
jquery[1.11.3];
shiny[0.13];
ionrangeslider[2.0.12];
strftime[0.9.2]
</script>
<script src="shared/json2-min.js"></script>
<script src="shared/jquery.min.js"></script>
<link href="shared/shiny.css" rel="stylesheet"/>
<script src="shared/shiny.min.js"></script>
<link href="shared/ionrangeslider/css/ion.rangeSlider.css"
rel="stylesheet"/>
<link href="shared/ionrangeslider/css/ion.rangeSlider.skinShiny.css"
rel="stylesheet"/>
<script src="shared/ionrangeslider/js/ion.rangeSlider.min.js"></script>
<script src="shared/strftime/strftime-min.js"></script>
</head>
<body>
<p style="color:red">{{ uiOutput("score_value") }}</p>
</body>
</html>
'
)
server <- function(input, output, session) {
output$score_value <- renderUI({
tagList(
renderText(
mean(my_dataframe$score)
)
)
})
}
shinyApp(ui = ui, server = server)
答案 1 :(得分:1)
您的代码错过的第一件事是{{headContent()}}
library(shiny)
test_date <- as.Date(c('2019-01-01','2019-01-02','2019-01-03','2019-01-04'))
score <- c(75,80,85,90)
my_dataframe <- data.frame(test_date, score)
ui <- htmlTemplate(
text_ = '
<html>
<head>
{{headContent()}}
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="application/shiny-singletons"></script>
<script type="application/html- dependencies">json2[2014.02.04];jquery[1.12.4];shiny[1.2.0]</script>
</head>
<body>
<div style="color:red">{{textOutput("score_value")}}</div>
</body>
</html>'
)
server <- function(input, output, session) {
output$score_value <- renderText(
{mean(my_dataframe$score)}
)
}
shinyApp(ui, server)
接下来,因为您只是在渲染文本值,所以使用renderText
和textOutput
。这样就可以了。
headContent()必须放置在HTML的
<head>
部分中,如果 这是一个完整的HTML页面(与页面的组成部分相对, 我们将在后面讨论)。这告诉Shiny,各种Shiny 标头代码应包含在此处。
此外,p
标记被div
标记替换,以体现样式。
答案 2 :(得分:0)
目前无法测试,但是您是否尝试过将HTMLTemplate包裹在类似的Shinuiui函数中?
ui <- shinyUI(htmlTemplate(
text_ = '
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="application/shiny-singletons"></script>
<script type="application/html- dependencies">json2[2014.02.04];jquery[1.12.4];shiny[1.2.0]</script>
</head>
<body>
<p style="color:red">{{renderUI("score_value")}}</p>
</body>
</html>'
))