Ввод:
x <- list("&a", NULL, "&b", "&a", "", "&c", "&c", "&a", list())
Желаемый вывод:
Добавить индекс, если элемент появляется более одного раза, и если элемент не длина 0, NULL или пустая строка
list("&a(1)", NULL, "&b", "&a(2)", "", "&c(1)", "&c(2)", "&a(3)", list())
То, что я пробовал:
Это работает, но, конечно, не выглядит элегантно / эффективно.
x <- list("&a", NULL, "&b", "&a", "", "&c", "&c", "&a", list())
tbl <- table(unlist(x))
for(name in names(tbl)){
idx <- which(name == x)
if(nchar(name) & length(idx)) x[idx] <- glue("{name}({1:length(idx)})")
}
x
Если вопрос лучше подходит для проверки кода, я, конечно, перенесу его.