如何为R语言数据框逐行判断两列字符串匹配并添加布尔结果列?
最简实现方法
这事儿其实特别简单,用R的向量化特性直接就能搞定,完全不用写循环或者复杂函数,效率还高。
具体操作步骤
- 先确认你的数据框创建代码(方便复现场景):
df <- data.frame(c("blue","green","red"), c("red","green","blue")) names(df) <- c("df.x","df.y")
- 只需要一行代码就能添加逐行比较的结果列:
df$is_equal <- df$df.x == df$df.y
执行后的最终数据框
运行完上面的代码,你的数据框会变成这样:
df.x df.y is_equal 1 blue red FALSE 2 green green TRUE 3 red blue FALSE
为啥这是最简写法?
因为R里的==是向量化运算符,它会自动逐行对比df.x和df.y的对应元素,返回一个由布尔值组成的向量,直接把这个向量赋值给新列就完成了所有行的判断,比用apply或者循环简洁太多,而且运行效率更高。
内容的提问来源于stack exchange,提问作者Daniel Brichler
相关产品推荐
相关产品推荐

