Effizienter R-Code zum Auffinden von Indizes, die eindeutigen Werten im Vektor zugeordnet sind

Angenommen, ich habe einen Vektorvec <- c("D","B","B","C","C").

Mein Ziel ist es, eine Liste von Dimensionen zu erstellenlength(unique(vec)), wo jederi dieser Liste gibt einen Vektor von Indizes zurück, die die Positionen von bezeichnenunique(vec)[i] imvec.

Zum Beispiel diese Liste fürvec würde zurückkehren:

exampleList <- list()
exampleList[[1]] <- c(1) #Since "D" is the first element
exampleList[[2]] <- c(2,3) #Since "B" is the 2nd/3rd element.
exampleList[[3]] <- c(4,5) #Since "C" is the 4th/5th element.

Ich habe den folgenden Ansatz ausprobiert, aber er ist zu langsam. Mein Beispiel ist groß, deshalb brauche ich schnelleren Code:

vec <- c("D","B","B","C","C")
uniques <- unique(vec)
exampleList <- lapply(1:3,function(i) {
    which(vec==uniques[i])
})
exampleList

Antworten auf die Frage(4)

Ihre Antwort auf die Frage