数据表中的图标闪亮

Meg*_*gan 5 icons r shiny

我正在尝试将一列图标添加到Shiny应用程序中显示的数据表中。本质上,我只想在数据上升时使用向上箭头,而在数据下降时使用向下箭头。但是,我不确定如何显示图标。当我添加仅用于例如的列时icon("arrow-up"),出现以下错误:

错误:类型“列表”未实现默认方法

我可以看到,如果我在Shiny之外尝试这种方法,那么它将显示有关图标的数据,而不是显示图标。

一种选择是使用将其添加为图像的方法-但是感觉会有更直接的方法吗?我也不确定如何使用“真棒字体”图标来做到这一点。

抱歉,如果这是基本内容-我找不到答案!

这是我正在做的简化版本:

library(shiny)
library(shinydashboard)

number_compare <- data.frame(replicate(2, sample(1:100, 10, rep=TRUE)))
number_compare$direction <- ifelse(number_compare$X1 < number_compare$X2, "Up", "Down")
number_compare$direction <- ifelse(number_compare$X1 == number_compare$X2, "", number_compare$direction)


sidebar <- dashboardSidebar()

body <- dashboardBody(
  fluidRow(box(width = 12, solidHeader = TRUE,
               tableOutput("example_table"))
           )
  )

ui <- dashboardPage(dashboardHeader(title = "Example"),
                    sidebar,
                    body
)


server <- function(input, output) {
  output$example_table <- renderTable(number_compare)
}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

ano*_*red 8

你没有说你想使用什么图标,所以我会假设angle-upangle-down字体很棒,但你也可以使用字形。

正如您所指出的, 的输出icon()是一个列表。在您的分配ifelse中将给出一列重复值i、图标名和NULL.

相反,尝试包装icon()as.character()给该图标的原始HTML。例如:

number_compare$direction <- ifelse(
    number_compare$X1 < number_compare$X2,
    as.character(icon("angle-up")),
    as.character(icon("angle-down"))
)
Run Code Online (Sandbox Code Playgroud)

这将使用<i class="fa fa-angle-up"></i>您可以在应用程序中作为原始 HTML 打印的值填充该列。

或者,您可以使用 HTML 转义码在不使用图标的情况下打印箭头。有关HTML 转义码列表,请参阅https://www.w3schools.com/charsets/ref_utf_arrows.asp

编辑:每当您在表格中包含原始 HTML 时,请确保闪亮不会逃脱它。您的通话替换为renderTable(number_compare)renderTable(number_compare, sanitize.text.function = function(x) x) (基于[R闪亮的表不渲染HTML