繁体   English   中英

R DT:select 交互式 htmlwidget DT 数据表中的特定列

[英]R DT: select specific columns in an interactive htmlwidget DT datatable

我有一个数据集,假设有两列。 一列用于得分,另一列用于实际值。 我想根据分数列为实际值列着色,然后删除分数列。 我已经这样做了,但我无法使用DT::datatable选项删除分数列。 请记住,我所说的数据表是指DT::datatable()交互式界面 html 小部件表。

## Sample df  ##

df = data.frame(
    actual = sample(1:10),
    score = runif(10)
)

----------

## Coloring breaks ##

brks <- quantile(df, probs = seq(.05, .95, .05), na.rm = TRUE)
clrs <- round(seq(255, 40, length.out = length(brks) + 1), 0) %>%
  {paste0("rgb(255,", ., ",", ., ")")}

----------

## Generating DT ##

datatable(df) %>% formatStyle(
  'actual', 'score',
  backgroundColor = styleInterval(brks, clrs))

此处有关样式的更多信息:

DT 造型

不适用的解决方法

您可以在生成数据表之前先 select 列。 df %>% select(actual) %>% datatable(.)但这在我的情况下不起作用,因为我必须先进行样式设置,然后是 html 小部件中的 select。

预期的解决方法

我想要一个选项来指定 select 使用DT::datatable()的列(在这种情况下只有值列),在我的真实案例中是多列。

所以问题是如何使用以下语法 select 值列?

datatable(df) 

有一个名为selected的选项,但它说它适用于 shiny。 我已经阅读了有关选项的信息,并且有一个select.item可能有效,但我可能缺少正确的语法。

解决方案是隐藏/使列可见。 要隐藏它们:

这是通过使用 boolean 的可见性和目标列的选项columnDefs完成的。 您可以使用向量 a c()提供多个

datatable(df, 
          options = list(columnDefs = 
                           list(
                                  list(visible=FALSE, targets=c(2))
                               )
                         )) %>% 
  formatStyle(
  'actual', 'score',
  backgroundColor = styleInterval(brks, clrs))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM