【问题标题】:How to filter a data frame according to named logical vector如何根据命名逻辑向量过滤数据框
【发布时间】:2018-12-26 14:07:47
【问题描述】:

我有一个命名逻辑,我想用它来过滤逻辑向量为 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

【问题讨论】:

    标签: r dataframe filter


    【解决方案1】:

    这是一种方法:

    # 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
    

    【讨论】:

    • v 在这个解决方案中是什么意思?
    • @NelsonGon 眼见为实。检查我给出的示例。
    • @RonakShah 实际上,您假设命名逻辑向量的顺序与数据框的名称完全一致,但情况可能并非如此,see here
    • @TimBiegeleisen 是的,你是对的!我的错。谢谢:)
    猜你喜欢
    • 2022-07-06
    • 2021-01-14
    • 1970-01-01
    • 2019-02-06
    • 2011-11-21
    • 1970-01-01
    • 2021-12-29
    • 2021-12-03
    • 1970-01-01
    相关资源
    最近更新 更多