You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

dplyr中if_else报错‘false must be a vector’的解决方法咨询

问题解决:if_else报错处理

你遇到的错误是因为dplyr::if_else对分支返回值有严格要求——真假分支必须是同类型的向量,而NULL不属于向量类型,和name(字符型向量)不匹配,所以触发报错。

解决方法很直接:把NULL换成字符型缺失值NA_character_(如果是数值型场景就用NA_real_,这里name是字符类型,所以用前者),保证两个分支的类型完全一致。

修改后的完整代码如下:

library(tidyverse)
table_base <- data.frame(cat=c("a","b","c","d"))

table_a <- data.frame(cat=c("a","b"),
                      value=c(1,2))

table_b <- data.frame(cat=c("a","c","d"),
                      value=c(7,9,10))

final_0 <- reduce(list(table_base,table_a,table_b),left_join,by='cat') %>% 
  mutate(amount = dplyr::coalesce(!!!select(.,contains("value"))))

final_0 %>% 
  pivot_longer(-c('cat','amount')) %>% 
  mutate(value_from=if_else(amount==value, name, NA_character_)) 

运行这段代码后,value_from列会在amount和value相等时填充对应的name,不相等时显示字符型缺失值NA,完全符合预期逻辑。

内容的提问来源于stack exchange,提问作者anderwyang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 14:52:03