1
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')
            ))

それらの列を手動で非表示にします。

4

2 に答える 2

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具体的な質問ではないことに気付きました。しかし、これうまくいくので、ここに残します。

于 2016-02-12T14:33:41.823 に答える
2

あなたdf1data.frameできる場合:

df1[, colSums(df1 != 0) > 0]
于 2016-02-12T14:36:08.007 に答える