我有一个数据框如下

chr     Type
1     Tum,B,B,Tum
2     B,B
3     Tum,Tum
4     B,B,B,Tum

我只想选择同时具有Tum和B的那些行插入到新数据框中,结果如下:
chr     Type
    1     Tum,B,B,Tum
    4     B,B,B,Tum

我尝试了以下
PusungMix <- as.data.frame(Pusung[grep("Barr"&"Tum", Pusung$Type])

但是我得到了错误
Error in "Barr" & "Tum" :
  operations are possible only for numeric, logical or complex types

最佳答案

我们可以使用双grepl创建两个逻辑索引,并使用&检查两个实例是否均为TRUE的实例。这可以用于子集“df1”的行。

 indx <- grepl('B', df1$Type) & grepl('Tum', df1$Type)
 df1[indx,]
 #  chr        Type
 #1   1 Tum,B,B,Tum
 #4   4   B,B,B,Tum

或正如评论中的@Gaurav所建议的那样,如果我们不想使用subset[是另一个选择。我们可以删除df1$中的subset,也不必担心删除尺寸,因为drop=FALSEsubset中的默认值,而[drop=TRUE中的默认值。因此,当我们只有一列或一行时,如果我们未在vector中明确指定drop=FALSE,则它将维降为[
 subset(df,grepl('B', Type) & grepl('Tum', Type))

09-06 08:04