使用R tidyverse筛选author列为NA且其余列有数据的dataframe行
错误原因
你现有代码的逻辑偏差出在第二个filter的判断规则:across(.cols = everything(), .fns = ~ !is.na(.x))的作用是要求所有列同时满足非NA条件才会保留行,但你筛选的前置条件已经把author列是NA的行挑出来了,所以必然返回空结果,同时也不符合你要求的「其余任意列存在非NA值就保留」的规则。
解决方案
使用tidyverse内置的if_any()函数即可实现「指定列中任意一列满足条件就返回TRUE」的判断,你要的筛选逻辑可以直接写成:
df %>% filter( is.na(author), # 排除author列,检查剩余列是否有任意一列非NA if_any(.cols = -author, .fns = ~ !is.na(.x)) )
上述代码运行后会直接输出你给出的预期结果。
内容的提问来源于stack exchange,提问作者Stevestingray
相关产品推荐
相关产品推荐

