【发布时间】:2017-11-28 17:53:59
【问题描述】:
我正在尝试在数据框中查找某些值的所有实例,并将它们替换为 NA。我尝试了这两种我认为是等效的不同方法,但我得到了不同的结果。例如:
df <- data.frame(a=c(1,2),b=c(3,4))
df[df == 1 | df == 4] <- NA
给了我预期的结果:
df
# a b
# 1 NA 3
# 2 2 NA
而
df <- data.frame(a=c(1,2),b=c(3,4))
df[df %in% c(1,4)] <- NA
什么都不做:
df
# a b
# 1 1 3
# 2 2 4
这似乎是因为如果我使用“|”运算符,它逐个元素地搜索数据框,而如果我使用 %in% ,它会按向量(按列)搜索数据框向量,但我不明白为什么。
df <- data.frame(a=c(1,2),b=c(3,4))
df == 1 | df == 4
# a b
# [1,] TRUE FALSE
# [2,] FALSE TRUE
df %in% c(1,4)
# [1] FALSE FALSE
【问题讨论】:
-
%in%无法在 data.frame 中以您想要的方式工作。它适用于向量
标签: r