R data.table merge相同逻辑返回结果行数不一致问题咨询
差异原因
R语言语法对参数名大小写敏感,两次merge调用的逻辑并不完全一致,核心差异为连接模式参数的拼写错误:
- 生成c表的调用中使用了合法参数
all.x=TRUE,代表左连接,会完整保留左表(a表)的所有行,即便右表无匹配也会填充NA保留,最终得到7行符合预期。 - 生成d表的调用中误将参数写为
all.X=TRUE(X为大写),data.table::merge不存在该命名参数,错误参数会被直接忽略,merge默认执行内连接(仅保留两表完全匹配的行),因此最终仅返回5行匹配结果。
验证方法
将d表对应merge语句中的all.X修改为小写all.x后重新执行,即可得到和c表完全一致的7行结果。
内容的提问来源于stack exchange,提问作者user16818755
相关产品推荐
相关产品推荐

