[英]case_when() in R returns a larger length vector than is expected
为什么 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
编辑:查看 function 的文档也许上面应该返回错误而不是运行?
价值
长度为 1 或 n 的向量,匹配逻辑输入或 output 向量的长度,具有第一个 RHS 的类型(和属性)。 不一致的长度或类型将产生错误。
您的问题来自返回向量的最后一个条件TRUE ~ g[[2]]
。 其他条件返回单个值,这会混淆case_when
。
您可以通过将 output 统一到列表中来实现您想要的。
case_when( g[[1]] == "not something" ~ list(sum(g[[2]])),
g[[1]] == "something" ~ list(g[[2]][3]),
TRUE ~ g[2]
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.