如果2个特定列(R)中有零,则删除行

如果2个特定列(R)中有零,则删除行,r,dataframe,R,Dataframe,我有一个这样的数据框 col1 col2 col3 col4 row1 1 0 6 7 row2 5 7 0 6 row3 0 0 4 6 我只需要删除列1和列2中包含零的行。到目前为止,我已成功删除了所有带零的列: mk<-mk[apply(mk!=0, 1, all),] 我们可以使用rowSums创建逻辑向量。i、 e.将“mk”的前两列子集,检查其是否等于0,获取逻辑矩阵的行和,并使用将其转换为逻辑向量。

我有一个这样的数据框

    col1 col2 col3 col4
row1   1   0     6    7
row2   5   7     0    6
row3   0   0     4    6
我只需要删除列1和列2中包含零的行。到目前为止,我已成功删除了所有带零的列:

mk<-mk[apply(mk!=0, 1, all),]

我们可以使用
rowSums
创建逻辑向量。i、 e.将“mk”的前两列子集,检查其是否等于0,获取逻辑矩阵的
行和
,并使用
将其转换为逻辑向量。谢谢你能解释一下<2是什么意思吗?例如,如何更改命令以将相同的原则应用于第1列和第3列?@Manuel在这里,我们使用的2列是1和2,并且我们希望有0个数小于2的行,即不是所有元素都是00@Manuel为此,只需更改索引
mk[,c(1,3)]
,而不是
mk[,1:2]
是按顺序排列的,因为如果希望列从1到5
1:5
,则对于选定的
c(1,3,5)
    col1 col2 col3 col4
row1   1   0     6    7
row2   5   7     0    6
mk[rowSums(mk[, 1:2] == 0) < 2,]
#     col1 col2 col3 col4
#row1    1    0    6    7
#row2    5    7    0    6
mk[!apply(mk[, 1:2]==0, 1, all),]
#     col1 col2 col3 col4
#row1    1    0    6    7
#row2    5    7    0    6
mk[apply(mk[, 1:2], 1, any),]
mk <- structure(c(1L, 5L, 0L, 0L, 7L, 0L, 6L, 0L, 4L, 7L, 6L, 6L), 
.Dim = 3:4, .Dimnames = list(
    c("row1", "row2", "row3"),
    c("col1", "col2", "col3", "col4"
    )))