我有一个数据框如下
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=FALSE
是subset
中的默认值,而[
是drop=TRUE
中的默认值。因此,当我们只有一列或一行时,如果我们未在vector
中明确指定drop=FALSE
,则它将维降为[
。 subset(df,grepl('B', Type) & grepl('Tum', Type))