2016-09-25 24 views
2

私は非常に単純な問題があります。私は条件付きで特定の細胞の色をしようとしていますshinyrenderTable。何らかの理由で、以下の方法は右に一つのセルを着色し、同様に1列以上の行のセルを推進している。Shiny Rendertableのセルの色付け

test <- data.frame(test1 = c(1:3), test2 = c(4:6)) 
test[test$test1 == 1, "test1"] <- '<td style="background-color:red">' 

library(shiny) 

ui <- shinyUI(fluidPage(
    tableOutput("tt") 
    ) 
) 

server <- shinyServer(function(input, output) { 

    output$tt <- renderTable({ 
    test 
    }, sanitize.text.function = function(x) x) 
}) 

shinyApp(ui = ui, server = server) 

は、これはバグですか?私がHTML出力を調べると、空白のままの<td> </td>セルが残っていて、新しい<td style="background-color:red">が作成されていました。私も試してみました:

test[test$test1 == 1, "test1"] <- '<td bgcolor="#FF0000">1</td>' 

この他のスタイリングは動作します:

R shiny color dataframe

が動作するように、これはあまりにも単純です:私のような、より複雑なソリューションを避けるためにしようとしています

test[test$test1 == 1, "test1"] <- "<strong>1</strong>" 

?どうもありがとうございます。

+0

レンダーテーブルのみを使いたいですか?またはHtmlTableまたはDTかもしれませんか? – Batanichek

+0

@Batanichek簡潔にするために、私はrenderTableを使いたいと思います。それができないのであれば、私は他の関数やパッケージを使うことができます。 – Tunn

答えて

3

だけrenerTableを使用してそれを実行したい場合は、

tddivを追加しようとすることができます(ただし、同じテキスト位置をachiveするためにいくつかのCSSの操作が必要になる場合があります)

test <- data.frame(test1 = c(1:3), test2 = c(4:6)) 
test[test$test1 == 1, "test1"] <- '<div style="width: 100%; height: 100%; z-index: 0; background-color: green; position:absolute; top: 0; left: 0; padding:5px;"> 
<span>1</span></div>' 

library(shiny) 

ui <- shinyUI(fluidPage(
    tableOutput("tt"), 
    tags$head(tags$style("#tt td{ 
         position:relative; 
         }; 

         ")) 
) 
) 

server <- shinyServer(function(input, output) { 

    output$tt <- renderTable({ 
    test 
    }, sanitize.text.function = function(x) x) 
}) 

shinyApp(ui = ui, server = server) 

DTでは次のようにすることができます。

test <- data.frame(test1 = c(1:3), test2 = c(4:6)) 

library(shiny) 
library(DT) 

ui <- shinyUI(fluidPage(
    DT::dataTableOutput("tt") 
) 
) 

server <- shinyServer(function(input, output) { 

    output$tt <- DT::renderDataTable({ 
    datatable(test)%>%formatStyle("test1",backgroundColor=styleEqual(1, "red")) 
    }) 
}) 

shinyApp(ui = ui, server = server) 

DTバージョンでは分かるように、CSSスタイルは不要です

+0

それは美しいです。非常に驚いてこのメソッドは前に投稿されていません。 – Tunn

+0

DTバリアントが追加されました – Batanichek

関連する問題