r - 根据包含列名的输入向量过滤数据框

标签 r dplyr data-manipulation

我有一个数据框如下

Sol_name    geo_pos     loc_pos     dol_pos    pol_pos   kol_pos

A            1            1          0          0         1
B            0            1          1          0         0
C            1            0          1          1         1
D            0            1          0          0         1

我需要创建一个函数,用户可以在其中将列名输入到向量中,并且数据框将被过滤,其中任何列中的值为 1

示例:如果输入是 col_nm = c("geo_pos","dol_pos")那么我正在寻找的输出是
Sol_name    geo_pos     loc_pos     dol_pos    pol_pos   kol_pos

A            1            1          0          0         1
B            0            1          1          0         0
C            1            0          1          1         1

有什么有效的方法可以做到这一点吗?

数据
df <- read.table(text="Sol_name    geo_pos     loc_pos     dol_pos    pol_pos   kol_pos
A            1            1          0          0         1
B            0            1          1          0         0
C            1            0          1          1         1
D            0            1          0          0         1",h=T)

最佳答案

我们可以使用 rowSums在这里可以有效地过滤所选列中至少有一个“1”的行。

get_one_rows <- function(cols) {
    df[rowSums(df[cols] == 1) > 0, ]
}

col_nm = c("geo_pos","dol_pos")
get_one_rows(col_nm)

# Sol_name geo_pos loc_pos dol_pos pol_pos kol_pos
#1        A       1       1       0       0       1
#2        B       0       1       1       0       0
#3        C       1       0       1       1       1


col_nm = c("kol_pos")
get_one_rows(col_nm)

#  Sol_name geo_pos loc_pos dol_pos pol_pos kol_pos
#1        A       1       1       0       0       1
#3        C       1       0       1       1       1
#4        D       0       1       0       0       1

关于r - 根据包含列名的输入向量过滤数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52111343/

相关文章:

r - 最短路径函数在 R igraph 中返回错误路径

r - 在 R 中拟合正态分布

r - 检查组中的任何日期是否在 r 中该组的特定时间间隔内

r - 奇怪的 : cumsum not working on dplyr

通过一次调用运行 ifelse x 次(准迭代,直到满足条件)

r - 如何在 R 中操作配对数据集?

r - 在 r : increase argument font size without arguments gone missing, 中绘制 barplot 并绘制 bar 附近的值

R:向ggplot2添加水平线

r - 如何更改 R 中的分辨率(或重新网格)数据

AppleScript 中的字符串操作