当计算的条件长度仅为1时,为什么case when返回更大长度的向量?
这里使用的是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的类型(和属性)。长度或类型不一致将产生错误。
1条答案
按热度按时间ozxc1zmp1#
您的问题来自最后一个返回向量的条件
TRUE ~ g[[2]]
。其他条件返回单个值,这会使case_when
混淆。您可以通过将输出统一到列表来实现您想要的结果。