df1 <-
structure(
list(
Z = structure(
1:5, .Label = c("A", "B", "C", "D",
"E"), class = "factor"
), H1 = c(0L, 0L, 0L, 0L, 0L), X1 = c(178L,
182L, 197L, 177L, 163L), H2 = c(0L, 0L, 0L, 0L, 0L), X2 = c(85L,
77L, 66L, 68L, 86L), X3 = c(320L, 344L, 332L, 311L, 322L)
), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA,-5L), .Names = c("Z",
"H1", "X1", "H2", "X2", "X3")
)
有没有办法告诉DT::datable
隐藏只有零的列?在这种情况下,H1
和H2
我可以这样做:
library(DT)
df1 %>%
datatable(rownames = F,
extensions = 'ColVis', options = list(
dom = 'C<"clear">lfrtip',
colVis = list(exclude = c(0), activate = 'mouseover')
))
然后手动隐藏这些列。
答案 0 :(得分:4)
这是针对1.9.8+版本修复的错误;请更新您的安装。
library(data.table) #1.9.8+
setDT(df1)
DT[ , lapply(.SD, function(x) if any(as.integer(x)) x)]
# Z X1 X2 X3
# 1: A 178 85 320
# 2: B 182 77 344
# 3: C 197 66 332
# 4: D 177 68 311
# 5: E 163 86 322
编辑:刚才意识到这不是一个data.table
问题。但是这个确实有效,所以我会把它留在这里。
答案 1 :(得分:2)
如果df1
是data.frame
,您可以这样做:
df1[, colSums(df1 != 0) > 0]