我想根据向量中包含的因子值生成一个子集。我已经包含了一个简单示例的工作代码。但是,如果我有很多列(> 10)并且我不想使用“|”列出每一列怎么办 (或),有没有更好的方法来做到这一点?我下面的示例使用字母,但我正在处理因素(人名)。
set.seed(37)
df <- data.frame(id1=sample(LETTERS, 20),id2=sample(LETTERS, 20))
L <- c("A","B","E")
subset(df, id1 %in% L | id2 %in% L )
id1 id2
2 B V
10 C B
11 F A
14 A F
19 E S
您可以使用Reduce
来构造OR条件:
subset(df, Reduce("|", lapply(df, `%in%`, L)))
# id1 id2
#2 B V
#10 C B
#11 F A
#14 A F
#19 E S
或用于rowSums
检查每行是否有任何字母匹配:
subset(df, rowSums(sapply(df, `%in%`, L)) != 0)
# id1 id2
#2 B V
#10 C B
#11 F A
#14 A F
#19 E S
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句