我有一个包含缺失逻辑的命名数据帧,我想得到一个列名称为TRUE的向量(沿着行向下,如果一行中有多个TRUE,则从左向右).举个例子:

df <- data.frame(a= c(FALSE, NA, TRUE, TRUE),
                 b= c(TRUE, FALSE, FALSE, NA),
                 c= c(TRUE, TRUE, NA, NA))
df
#       a     b    c
# 1 FALSE  TRUE TRUE
# 2    NA FALSE TRUE
# 3  TRUE FALSE   NA
# 4  TRUE    NA   NA

expected <- c("b", "c", "c", "a", "a")

从第一排到最后一排,我们看到第一排有TRUE个.这里有多个TRUE,因此我们从左到右得到"b""c".在第二次拖航中,我们得到"c",以此类推.

如何(以优雅的方式)做到这一点?

推荐答案

您可以在base R中执行以下操作:

pos <- which(t(df) == TRUE, arr.ind = TRUE)
names(df)[pos[, "row"]]
[1] "b" "c" "c" "a" "a"

R相关问答推荐

如何使用R以NASAGIBS.ViirsEarthAtNight2012风格绘制自定义 map

插入指示行之间时间间隔的新行

大规模重新标记haven标签数据

过滤器数据.基于两列的帧行和R中的外部向量

如何在xyplot中 for each 面板打印R^2

如何根据组大小应用条件过滤?

RStudio中相关数据的分组箱形图

R Sapply函数产生的值似乎与for循环方法略有不同

根据日期从参考帧中创建不同的帧

如果某些列全部为NA,则更改列

将饼图插入条形图

将多列合并为单独的名称—值对

在R gggplot2中是否有一种方法将绘图轴转换成连续的 colored颜色 尺度?

使用data.table::fcase()而不是dplyr::case_When()时保持值

如何在使用箭头R包(箭头::OPEN_DATASSET)和dplyr谓词时编写具有整齐计算的函数?

减go R中列表的所有唯一元素对

使用shiny 中的所选要素行下拉菜单

如何为混合模型输出绘制不同的线型?

计算来自单独分组的分幅的值的百分位数

排序R矩阵的行和列