【问题标题】:what is difference between [ data$group == c("A","B")] and [ data$group == "A" | data$group == "B" ]?[ data$group == c("A","B")] 和 [ data$group == "A" | 有什么区别?数据$group == "B" ]?
【发布时间】:2021-12-23 16:27:08
【问题描述】:

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

如果知道原因的人留下一些 cmets 将不胜感激

这里有个问题

例如,

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 的数据数相同

这两件事有何不同?

【问题讨论】:

  • d1而不是==,您可能需要使用%in%...?
  • %in% 解决了,谢谢。你能告诉我为什么“==”不起作用吗?我认为这意味着 data$group == "A" 或 data$group == "B" (例如提取行在 data$group 中有“A”或“B”)
  • data$group == "A"data$group == "B"%in% 而不是 ==。如果您需要更多描述,我可以在下面添加一些详细信息。

标签: r select subset


【解决方案1】:

我猜你的数据是这样的:

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 列显示了哪些行是 TRUE 并且行号匹配 subset(data, data$group == c("A","B")) 的索引。 d2 &lt;- subset(data, data$group == "A" | data$group == "B")另一方面 将data$group 的每一行与 A or B 进行比较。对于 向量中的所有值。

reprex package (v2.0.1) 于 2021 年 11 月 11 日创建

【讨论】:

    猜你喜欢
    • 2011-12-24
    • 2018-06-27
    • 2010-11-27
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多