R语言中如何判断两列字符值是否相等并生成永久新列?
问题修正方案
错误原因
你的代码存在两个关键问题:
- 用单引号包裹列名
'start_id'和'end_id',导致实际比较的是字符串字面量"start_id"和"end_id",而非数据框中对应列的内容。 - 误用
if_else函数:该函数仅需三个参数(判断条件、真值、假值),你传入了四个参数,且逻辑冗余。
修正代码
最简写法(推荐)
因为start_id == end_id本身就会返回布尔值(相等为TRUE,不等为FALSE),直接赋值即可:
df_new <- df %>% mutate(new_column = start_id == end_id)
用if_else的正确写法
如果坚持用if_else,只需传入正确的三个参数:
df_new <- df %>% mutate(new_column = if_else(start_id == end_id, TRUE, FALSE))
验证说明
运行修正后的代码后,new_column会正确根据start_id和end_id的实际值生成布尔结果,不会再全部返回TRUE。
内容的提问来源于stack exchange,提问作者Genjine
相关产品推荐
相关产品推荐

