我有一个 ff 数据框 windows_ff:
edge ipaddr port protocol windowed_qd class
1 1182430570 41.2.194.42 1299 1 0 WEB
2 1182430570 41.2.194.42 1302 1 0 WEB
我想找到它的行之间的相互关系,所以我决定制作该数据框的精确副本:
outgoing_windows_ff_1 <- ffdf(edge=outgoing_windows_ff$edge,
ipaddr=outgoing_windows_ff$ipaddr,
influencing_port=outgoing_windows_ff$port,
influencing_proto=outgoing_windows_ff$proto,
influencing_class=outgoing_windows_ff$class)
然后合并2个数据框:
merged <- merge(x=outgoing_windows_ff, y=outgoing_windows_ff_1,
by.x=c('edge','ipaddr'),by.y=c('edge','ipaddr') )
结果是:
edge ipaddr port protocol windowed_qd class influencing_port
1 1182430570 41.2.194.42 1299 1 0 WEB 1299
2 1182430570 41.2.194.42 1302 1 0 WEB 1299
但这是错误的,因为我希望结果中有 4 行。
在普通数据框之间进行合并:
merged <- merge(x=as.data.frame(outgoing_windows_ff),
y=as.data.frame(outgoing_windows_ff_1),
by.x=c('edge','ipaddr'),by.y=c('edge','ipaddr') )
我得到正确的结果:
edge ipaddr port protocol windowed_qd class influencing_port influencing_proto
1 1182430570 41.2.194.42 1299 1 0 WEB 1299 1
2 1182430570 41.2.194.42 1299 1 0 WEB 1302 1
3 1182430570 41.2.194.42 1302 1 0 WEB 1299 1
4 1182430570 41.2.194.42 1302 1 0 WEB 1302 1
我认为如果使用 ff 数据帧或“普通数据帧”,某个操作会给出 2 个不同的结果,这真的很危险。这可能导致中毒的结果,实验者无法知道这一点。我的疑问是:“也许我用 ff 包获得的其他结果被毒化了,我没有意识到”