在R中检查列表相等,all.equal不返回true

时间:2017-04-07 21:06:15

标签: r list comparison equality

我试图仅根据df的4个元素来检查数据帧中的行是否相等。我将数据帧的子集分配给我想要比较的2行和4个元素,最后得到2个列表。

当我在2个列表中使用all.equalidentical时,它们不会返回为相等。但是,如果我遍历2个列表中的每个元素并使用“==”进行比较,则每个元素比较返回相等。

这是我正在使用的代码。

for (row in 1:nrow(df)) {
    first <- df[row, c("elem1", "elem2", "elem3", "elem4")]
    second <- df[row+1, c("elem1", "elem2", "elem3", "elem4")]
    if (isTRUE(all.equal(first, second))) {
      df[row, "diff_element"] <- 1
    }
}

当我打印str(first)str(second)时,它们是相同的。我无法弄清楚为什么至少all.equal不会返回true。

以下是df的一部分:

   elem1 elem2 elem3  num1      num2    num3    num4 elem4 diff_element
1 103404   BRJ    CJ 55.89  17.70005 107.017 77.0330   Car            0
2 103404   BRJ    CJ 55.89  17.70005 107.017 77.0330   Car            0
3 355309   CLK    JR 12.00 223.44000  23.000 20.2234 Train            1

这是我检查结构时得到的结果(前两行应该相等):

> str(first)
'data.frame':   1 obs. of  4 variables:
 $ elem1: int 103404
 $ elem2: Factor w/ 2 levels "BRJ","CLK": 1
 $ elem3: Factor w/ 2 levels "CJ","JR": 1
 $ elem4: Factor w/ 2 levels "Car","Train": 1
> str(second)
'data.frame':   1 obs. of  4 variables:
 $ elem1: int 103404
 $ elem2: Factor w/ 2 levels "BRJ","CLK": 1
 $ elem3: Factor w/ 2 levels "CJ","JR": 1
 $ elem4: Factor w/ 2 levels "Car","Train": 1

0 个答案:

没有答案