Sto tentando di scrivere una funzione per contare il numero di istanze consecutive di un motivo. Per fare un esempio, mi piacerebbe la stringaConteggio di modelli consecutivi nelle stringhe usando R
string<-"A>A>A>B>C>C>C>A>A"
da trasformare in
"3 A > 1 B > 3 C > 2 A"
Ho una funzione che conta le istanze di ogni stringa, vedere di seguito. Ma non raggiunge l'effetto dell'ordine che mi piacerebbe. Qualche idea o suggerimento?
Grazie,
R
funzione esistente:
fnc_gen_PathName <- function(string) {
p <- strsplit(as.character(string), ";")
p1 <- lapply(p, table)
p2 <- lapply(p1, function(x) {
sapply(1:length(x), function(i) {
if(x[i] == 25){
paste0(x[i], "+ ", names(x)[i])
} else{
paste0(x[i], "x ", names(x)[i])
}
})
})
p3 <- lapply(p2, function(x) paste(x, collapse = "; "))
p3 <- do.call(rbind, p3)
return(p3)
}
Avete visto la funzione 'rle()'? Dovrebbe funzionare bene se dividi la tua stringa in un vettore. – MrFlick
Perfetto, grazie mille. Mai sentito parlare della funzione prima, ma molto facile da usare. –