如果至少有一个或多个值匹配,要对 R 数据框行进行子集化,我们可以按照以下步骤操作 -
首先,创建一个数据框。
然后,如果至少一个或多个值匹配,则使用 rowSums 函数以及 sapply 函数和匹配值对数据框行进行子集化。
让我们创建一个数据框,如下所示 -
x<-rpois(25,5) y<-rpois(25,5) z<-rpois(25,5) df<-data.frame(x,y,z) df输出结果
执行时,上述脚本生成以下内容output(this output will vary on your system due to randomization)-
x y z 1 5 5 2 2 10 5 5 3 3 4 6 4 9 4 12 5 2 4 5 6 3 4 4 7 4 3 9 8 4 5 10 9 5 3 9 10 3 2 2 11 2 8 4 12 4 5 2 13 2 9 2 14 5 2 1 15 6 2 7 16 2 4 7 17 7 5 5 18 3 3 1 19 4 4 7 20 7 4 5 21 4 4 4 22 3 6 2 23 3 2 7 24 1 3 3 25 5 4 4
子集数据框
如果这些值中的至少一个或多个匹配,则使用 rowSums 函数以及 sapply 函数和值 4,5,6,7,8 进行匹配以对数据框行进行子集化 -
x<-rpois(25,5) y<-rpois(25,5) z<-rpois(25,5) df<-data.frame(x,y,z) df[rowSums(sapply(df[], '%in%', c(4,5,6,7,8)))>0,]输出结果
x y z 1 5 5 2 2 10 5 5 3 3 4 6 4 9 4 12 5 2 4 5 6 3 4 4 7 4 3 9 8 4 5 10 9 5 3 9 11 2 8 4 12 4 5 2 14 5 2 1 15 6 2 7 16 2 4 7 17 7 5 5 19 4 4 7 20 7 4 5 21 4 4 4 22 3 6 2 23 3 2 7 25 5 4 4