繁体   English   中英

R 中的 case_when() 返回比预期更长的向量

[英]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.

 
粤ICP备18138465号  © 2020-2025 STACKOOM.COM