在 R 中,指示每行中哪些列的值为“true”

Omr*_*tia 5 aggregate r dplyr

我有以下数据框:

> db
# A tibble: 3 x 4
    x     y     z     w
  <lgl> <lgl> <lgl> <lgl>
1  TRUE FALSE  TRUE FALSE
2  TRUE FALSE  TRUE FALSE
3  TRUE FALSE  TRUE FALSE
Run Code Online (Sandbox Code Playgroud)

我想创建一个新列,其中每行存储等于 TRUE 的列,因此例如第 1 行将是 c(x,z) (例如以字符格式)。

dplyr 解决方案将不胜感激!

Ste*_*ski 6

使用apply

 df <-
   data.frame(
     x = c(T, T, T),
     y = c(F, F, F),
     z = c(T, F, F),
     w = c(T, F, T)
   )

 df$true_cols <- apply(df, 1, function(data)
   names(which(data == T)))
Run Code Online (Sandbox Code Playgroud)

您查看每一行,并找到其值设置为“TRUE”的列。这是通过which函数收集的,该函数返回一个类似于索引的数字。使用该name函数,可以返回列名称而不是列位置。

希望这可以帮助。