无法将字符值与多列匹配

时间:2015-04-11 20:04:03

标签: r dataframe match

我试图将字符值" C"匹配到数据框中的多个列。这是框架的一部分:

X1 X2

1  F  F
2  C  C
3  D  D
4 A# A#

这是当我尝试匹配值时发生的事情" C":

> "C" %in% frame[, 1]
[1] TRUE
> "C" %in% frame[, 1:2]
[1] FALSE

考虑到" C"在两栏中,我无法弄清楚为什么它会返回假。是否有一个函数或运算符可以测试以查看多列中是否存在值?我的目标是创建一个函数,该函数可以将字符值的总和与" C"在指定的列中找到。

2 个答案:

答案 0 :(得分:1)

尝试:

apply(frame, 2, function(u) "C" %in% u)

您还可以使用is.element

apply(frame, 2, function(u) is.element("C",u))

答案 1 :(得分:0)

你可能想在这里使用grepl,它返回一个逻辑向量。然后,您可以使用sum计算出现次数。

> frame
   X1 X2
 1  F  F
 2  C  C
 3  D  D
 4 A# A#
> grepl('C', frame$X1)
 [1] FALSE  TRUE FALSE FALSE
> sum(grepl('C', frame$X1))
 [1] 1

并计算您可以使用的每列中的C总数lapply (注意:apply更适合矩阵,而不是数据帧 列表。)

> sum(unlist(lapply(frame, function(col) grepl('C', col))))
 [1] 2