我有两个小数据框this_tx
和last_tx
。从各方面来说,它们都是完全相同的。 this_tx
== last_tx
会生成相同维度的框架,全部为TRUE
。 this_tx %in% last_tx
,两个TRUEs
。视觉检查,明显相同。但是当我打电话时
identical(this_tx, last_tx)
我得到FALSE
。非常热闹,甚至
identical(str(this_tx), str(last_tx))
将返回TRUE
。如果我设置this_tx <- last_tx
,我会收到TRUE
。
发生了什么事?我对R的内部机制没有最深刻的理解,但我找不到两个数据帧之间的单一差异。如果它是相关的,则帧中的两个变量都是因子 - 相同的级别,级别的相同数字编码,两者都只是相同原始数据帧的子集。将它们转换为字符向量无济于事。
背景(因为我不介意对此有所帮助):我有给患者的药物治疗记录。每个治疗记录基本上指定一个人和一个日期。第二个表格记录了在特定治疗期间给予的每种药物和剂量(通常,每种治疗给予少量药物)。我正在尝试确定这个人在相同剂量下服用相同药物组合的连续时期。
我提出的最好的计划是按时间顺序检查治疗方法。如果药物和治疗剂量[i]的组合与治疗[i-1]的组合相同,则治疗[i]是与治疗[i-1]相同的一部分。当然,如果我无法比较药物/剂量组合,那就是正确的。
答案 0 :(得分:7)
通常,在这种情况下,尝试all.equal
会很有用,它会为您提供有关两个对象不相等的原因的信息。
答案 1 :(得分:6)
嗯,“moar specifics plz!”的疲惫的叫声!在这种情况下可能获胜:
检查dput()
的输出并尽可能发布。 str()
只是总结了一个对象的内容,而dput()
以一种可以复制并粘贴到另一个R解释器中的形式转储所有血腥细节以重新生成该对象。