假设我们有一个数据框
a[1:3,2:3]
AWAY HOME
1 CLE BOS
2 MIL CHI
3 POR LAL
如果我这样做
a[1:3,2:3]==c("CLE","BOS")
AWAY HOME
1 TRUE TRUE
2 FALSE FALSE
3 FALSE FALSE
我按预期得到了。但是,如果我做了
a[,2:3]==c("CLE","BOS")
AWAY HOME
1 TRUE FALSE
2 FALSE FALSE
3 FALSE FALSE
....(Others left out, as unimportant)....
为什么会这样?它不应该给出相同的答案,除了另一个在整个数据帧上执行吗?这种差异来自哪里?两种情况都不应该作为第一行返回TRUE TRUE吗?
答案 0 :(得分:0)
我们可以使用%in%
代替==
来比较单个元素
a[1:2] <- lapply(a[1:2], '%in%' , c("CLE", "BOS"))
a
# AWAY HOME
#1 TRUE TRUE
#2 FALSE FALSE
#3 FALSE FALSE
有时,==
按预期工作,但这只是偶然因为它按列进行比较,即在'AWAY'列中,它将第一个元素与“CLE”进行比较,第二个与“BOS”,第三名是“CLE”,第四名是“BOS”(由于回收)。这需要对元素进行某种排序以使输出正确,而%in%
检查这些元素是否存在。