我已经搜索了这个简单问题的答案,但找不到类似的问题.我有3个数据表:
set.seed(0) demo <- data.table(id = 1:10,demo.var = rnorm(10),key = 'id'); demo lab <- data.table(id = 1:7,tc = rnorm(7),key = 'id'); lab anthro <- data.table(id = 4:9,bmi = rnorm(6),key = 'id'); anthro
实验室和anthro中的所有ID都在演示数据表中,但实验室和anthro在演示中包含不同的ID的子集
都
lab[demo] anthro[demo]
给出我想要的信息:所有10个ID与实验室或anthro数据表中的附加信息,但是有没有以类似的方式将所有3合并?我已经尝试过一些排列
anthro[lab][demo]
但是这给了保存仅在实验室数据中的ID的anthro信息. – 没有关于ID 8和9的伪造信息
提前感谢任何帮助
解决方法
anthro[lab[demo]] # id bmi tc demo.var # 1: 1 NA 0.7635935 1.262954285 # 2: 2 NA -0.7990092 -0.326233361 # 3: 3 NA -1.1476570 1.329799263 # 4: 4 -0.8919211 -0.2894616 1.272429321 # 5: 5 0.4356833 -0.2992151 0.414641434 # 6: 6 -1.2375384 -0.4115108 -1.539950042 # 7: 7 -0.2242679 0.2522234 -0.928567035 # 8: 8 0.3773956 NA -0.294720447 # 9: 9 0.1333364 NA -0.005767173 # 10: 10 NA NA 2.404653389
内部表始终是执行外部连接的内部表,因此此嵌套确保具有索引值的超级集合的表始终为内部表.