删除嵌套列表数据框中的重复行

Remove duplicate rows in nested list data frame

我有一个带有嵌套列表的数据框:

df <- structure(list(zerobonds = c(1, 1, NA), nominal = c(20, 20, NA
), calls = list(list(c(NA, -1), 1), list(list(NA, -1), 1), NA), 
call_strike = list(list(c(NA, 90), 110), list(list(NA, 90), 
                                              110), NA), puts = list(NA, NA, list(c(NA, 1), -1)), put_strike = list(
                                                NA, NA, list(c(NA, 110), 90))), row.names = c(NA, -3L
                                                ), class = "data.frame")
df
##   zerobonds nominal     calls call_strike      puts  put_strike
## 1         1      20 NA, -1, 1 NA, 90, 110        NA          NA
## 2         1      20 NA, -1, 1 NA, 90, 110        NA          NA
## 3        NA      NA        NA          NA NA, 1, -1 NA, 110, 90

我的问题:您看到第一行和第二行重复了。我想删除此类数据框中的所有重复行,我正在寻找一些通用方法。

我试过: duplicated 似乎不起作用,我猜是因为数据框的这种特殊结构,里面有嵌套列表。

您可能需要展平每列的嵌套列表,然后应用 unique,例如,

> unique({df[]<-Map(function(x) Map(unlist,x),df);df})
  zerobonds nominal     calls call_strike      puts  put_strike
1         1      20 NA, -1, 1 NA, 90, 110        NA          NA
3        NA      NA        NA          NA NA, 1, -1 NA, 110, 90