我试图将字符值" 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"在指定的列中找到。
答案 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