Мы могли бы создать логический индекс с duplicated
, извлечь элементы из list
и объединить с помощью Map
, обновить list
и извлечь только те элементы на основе индекса
i1 <- duplicated(lst1)
i2 <- duplicated(lst1, fromLast = TRUE)
lst2 <- lst1
lst2[i1] <- Map(c, lst1[i1], lst1[i2])
lst2[!i2]
#[[1]]
#[1] "466" "1758" "975"
#[[2]]
#[1] "1528" "185" "975" "1528" "185" "975"
#[[3]]
[#1] "2892" "758" "971"
#[[4]]
#[1] "1321" "274" "969" "1321" "274" "969"
#[[5]]
#[1] "115" "1321" "969"
#[[6]]
#[1] "1321" "441" "969"
#[[7]]
#[1] "504" "61" "948" "504" "61" "948"
или с использованием split
lst2[i1] <- lapply(split(lst1[i1|i2], lst1[i1|i2], drop = TRUE), unlist)
data
lst1 <- list(c("466", "1758", "975"), c("1528", "185", "975"), c("1528",
"185", "975"), c("2892", "758", "971"), c("1321", "274", "969"
), c("1321", "274", "969"), c("115", "1321", "969"), c("1321",
"441", "969"), c("504", "61", "948"), c("504", "61", "948"))