[ data$group == c("A","B")] 和 [ data$group == "A" | 之间有什么区别?数据$组 == "B" ]?

what is difference between [ data$group == c("A","B")] and [ data$group == "A" | data$group == "B" ]?

我发现这两个函数有些不同,但我不知道它们为什么不同。

如果知道其中原因的人留下一些评论,将不胜感激

有个问题

例如,

data$group 有 16 chr 个“A”和 16 个 chr 个“B

如果我使用函数 c(),

d1 <- subset(data, data$group == c("A","B"))

d1 只是总数的一部分,例如 12

但如果我使用另一个,

d2 <- subset(data, data$group == "A" | data$group == "B")

d2 有相同数量的数据

这两件事有什么不同?

我猜你的数据是这样的:

data <- data.frame(
  group = sample(LETTERS[1:2], 16, TRUE)
)
data
#>    group
#> 1      A
#> 2      B
#> 3      A
#> 4      A
#> 5      B
#> 6      B
#> 7      B
#> 8      A
#> 9      A
#> 10     A
#> 11     B
#> 12     A
#> 13     A
#> 14     A
#> 15     A
#> 16     A

subset(data, data$group == c("A","B"))
#>    group
#> 1      A
#> 2      B
#> 3      A
#> 6      B
#> 9      A
#> 13     A
#> 15     A

会发生什么:==() 复制向量 c("A","B")直到它 匹配 data$group.

的长度

这说明了结果 subset(data, data$group == c("A","B")):

data.frame(
  group = sample(LETTERS[1:2], 16, TRUE),
  AB    = rep(c("A", "B"), 8),
  match = data$group == rep(c("A", "B"), 8)
)
#>    group AB match
#> 1      A  A  TRUE
#> 2      B  B  TRUE
#> 3      B  A  TRUE
#> 4      B  B FALSE
#> 5      B  A FALSE
#> 6      B  B  TRUE
#> 7      A  A FALSE
#> 8      B  B FALSE
#> 9      A  A  TRUE
#> 10     B  B FALSE
#> 11     A  A FALSE
#> 12     B  B FALSE
#> 13     A  A  TRUE
#> 14     A  B FALSE
#> 15     A  A  TRUE
#> 16     A  B FALSE

match 列显示哪些行为真且行号匹配 subset(data, data$group == c("A","B")) 的指数。 d2 <- subset(data, data$group == "A" | data$group == "B")另一方面 将 data$group 的每一行与 A B 进行比较。 向量中的所有值。

reprex package (v2.0.1)

于 2021-11-11 创建