按R中的模式值删除列

chi*_*tra 4 r dataframe

我有一个数据框,如:

g1   g2   g3   g4   g5
2    0    1    0    1
2    1    1    0    1
2    1    1    2    1
Run Code Online (Sandbox Code Playgroud)

我想删除每个列中至少有一个2的列.

并得到一个新的df:

g2   g3   g5
0    1    1
1    1    1
1    1    1
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

Tim*_*sen 5

我们可以colSums在这里使用:

df <- data.frame(g1=c(2,2,2), g2=c(0,1,1), g3=c(1,1,1), g4=c(0,0,2), g5=c(1,1,1))
df[, !colSums(df==2)]

  g2 g3 g5
1  0  1  1
2  1  1  1
3  1  1  1
Run Code Online (Sandbox Code Playgroud)

想法是包括原始数据帧中的所有行,但仅包括那些从不具有值2的列.在这种情况下,调用colSums()将为零,这在逻辑上等效false于R中.