【问题标题】:case_when() in R returns a larger length vector than is expectedR 中的 case_when() 返回比预期更大的长度向量
【发布时间】:2023-01-26 15:04:21
【问题描述】:

为什么 case when 返回一个更大的长度向量,当评估的条件只有长度 1 时?

这是使用 dplyr::case_when()。

这是我的例子:

g <- list("something", c(1:10))

case_when( g[[1]] == "not something" ~ sum(g[[2]]), 
           g[[1]] == "something" ~ g[[2]][3], 
           TRUE ~ g[[2]]
)

我本来希望结果是 3 而不是

3 3 3 3 3 3 3 3 3 3 3

编辑:查看函数的文档也许上面应该返回错误而不是运行?

价值
长度为 1 或 n 的向量,匹配逻辑输入的长度或 输出向量,具有第一个 RHS 的类型(和属性)。 不一致的长度或类型将产生错误。

【问题讨论】:

    标签: r dplyr case


    【解决方案1】:

    您的问题来自返回向量的最后一个条件 TRUE ~ g[[2]]。其他条件返回单个值并且混淆case_when

    您可以通过将输出统一到列表来实现您想要的。

    case_when( g[[1]] == "not something" ~ list(sum(g[[2]])), 
           g[[1]] == "something" ~ list(g[[2]][3]), 
           TRUE ~ g[2]
    )
    

    【讨论】:

      猜你喜欢
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 2018-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-15
      • 2014-07-13
      相关资源
      最近更新 更多