数据框列表:
my_list <- list(structure(list(id = c("xxxyz",
"xxxyz", "zzuio"), country = c("USA",
"USA", "Canada")), class = "data.frame", row.names = c(NA, -3L)),
structure(list(id = c("xxxyz", "ppuip",
"zzuio"), country = c("USA", "Canada", "Canada")), class = "data.frame", row.names = c(NA,
-3L)))
my_list
[[1]]
id country
1 xxxyz USA
2 xxxyz USA
3 zzuio Canada
[[2]]
id country
1 xxxyz USA
2 ppuip Canada
3 zzuio Canada
我想删除该列表中存储的数据帧内部和之间的重复行。
这可以删除每个数据框中的重复项:
lapply(my_list, function(z) z[!duplicated(z$id),])
[[1]]
id country
1 xxxyz USA
3 zzuio Canada
[[2]]
id country
1 xxxyz USA
2 ppuip Canada
3 zzuio Canada
但是数据帧之间仍然存在重复。我想将它们全部删除,并获得以下所需的输出:
[[1]]
id country
xxxyz USA
[[2]]
id country
ppuip Canada
zzuio Canada
备注:
id
上的重复项(其他变量可以重复)my_list
)试试这个。
> Map(`[<-`, my_list, '.k', value=lapply(my_list, `[`, 'id') |>
+ unlist() |>
+ duplicated() |>
+ split(sapply(my_list, nrow) |> {
+ \(.) mapply(rep.int, seq_along(.), .)
+ }())) |>
+ lapply(subset, !.k, select=-.k)
[[1]]
id country
1 xxxyz USA
3 zzuio Canada
[[2]]
id country
2 ppuip Canada