首页 > 解决方案 > dplyr - %in% 在用于数据帧时总是返回 false

问题描述

我正在尝试在 dplyr 中使用 mutate 函数来创建字符串功能。基本上,如果给定值存在于另一个数据框中,我想保留该值。否则,我想用未知替换它。当我尝试以下代码时,所有值始终显示为“未知”,无论它们是否存在于我用来查找的数据框中。我究竟做错了什么?

截屏

标签: rdplyr

解决方案


dataframe_name['column_name']返回一个数据框。您需要一个可以使用 or 来实现的向量,因此ifelse您应该使用or 。[[$dataframe_name[['column_name']]dataframe_name$column_name

例如,以mtcars数据集为例,查看输出的差异。

mtcars['cyl'] %in% 6
#[1] FALSE

mtcars[['cyl']] %in% 6
# [1]  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE
#[13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#[25] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE

mtcars$cyl %in% 6
# [1]  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE
#[13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
#[25] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE

这可能是一个有用的阅读 -括号 [ ] 和双括号 [[ ]] 之间的区别用于访问列表或数据框的元素


推荐阅读