我在R中使用case_when()函数,因为我正在处理某段代码中的所有异常。我想我的问题很简单,但我不确定如何实现它。使用case_when()函数可以考虑多个参数(就像在任何其他语句中一样)。给出下面的例子;
a <- "aap"
b <- case_when(str_count(a,"a") > 1 ~ 1,
str_count(a,"a") > 1 & str_count(a,"p") >= 1 ~ 2)我想返回值2,但是因为返回值1的参数也满足了,所以它返回1而不是2。有没有简单的解决方法?亲切的问候
发布于 2021-11-03 12:56:09
你可以颠倒你的条件。另外,这里您的第二个条件不满足( aap中有一个p,不是>1)。如果您键入:
b <- case_when(str_count(a,"a") > 1 & str_count(a,"p") >= 1 ~ 2,str_count(a,"a") > 1 ~ 1)它确实返回2。
发布于 2021-11-03 12:55:46
case_when在第一个TRUE条件下停止。这也是else条件(或“默认”,如果您愿意)最后出现的原因:
case_when(
a ~ 'a is true and nothing else matters',
b ~ 'a was not true, but b is, and nothing else matters',
TRUE ~ 'none of the above was true'
)交换这两个语句,你应该是好的。
https://stackoverflow.com/questions/69825125
复制相似问题