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

时间:2020-07-24 10:40:32

标签: r list dataframe duplicates nested-lists

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

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似乎不起作用,我想是因为其中包含嵌套列表的数据帧的特殊结构。

1 个答案:

答案 0 :(得分:1)

您可能需要展平每列的嵌套列表,然后应用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