如何根据命名逻辑向量过滤数据帧

时间:2018-12-26 14:07:47

标签: r dataframe filter

我有一个命名逻辑,我想用它来过滤逻辑矢量为FALSE的原始数据帧

我尝试使用两者的结合,但这不起作用。

命名的逻辑向量如下:

     fr_Ar_COO             fr_C_S              fr_SH        fr_aldehyde 
          TRUE               TRUE               TRUE              FALSE 

我想过滤一个像这样的数据框:(列名)

fr_Ar_COO             fr_C_S              fr_SH        fr_aldehyde         active 

因此fr_aldehyde应该被过滤掉,因为逻辑向量等于FALSE

1 个答案:

答案 0 :(得分:3)

这是一种方法:

# assuming your data frame is called df,
# and assuming 'v' is the logical vector
df[, names(v)[v]]

使用names(v)[v]将仅返回逻辑向量具有TRUE值的列名。

这是一个示例脚本:

df <- data.frame(A=c(1:3), B=c(4:6), C=c(7:9))
df
v <- c(A=TRUE, B=FALSE, C=TRUE)
df[, names(v)[v]]

  A B C
1 1 4 7
2 2 5 8
3 3 6 9

  A C
1 1 7
2 2 8
3 3 9