我有以下数据框:
> 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 解决方案将不胜感激!
使用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函数,可以返回列名称而不是列位置。
希望这可以帮助。