ho un vettore di larghezze,R convertire vettore di numeri per indici saltare
ws = c(1,1,2,1,3,1)
Da questo vettore Mi piacerebbe avere un altro vettore di questa forma:
indexes = c(1,2,3,5,6,7,9,11,12)
Al fine di creare tale vettore feci il seguente ciclo for R:
ws = c(1,1,2,1,3,1)
indexes = rep(0, sum(ws))
counter = 1
counter2 = 1
last = 0
for(i in 1:length(ws))
{
if (ws[i] == 1)
{
indexes[counter] = counter2
counter = counter + 1
} else {
for(j in 1:ws[i])
{
indexes[counter] = counter2
counter = counter + 1
counter2 = counter2+2
}
counter2 = counter2 - 2
}
counter2 = counter2+1
}
la logica è come segue, ogni elemento ws specifica l'respectiv numero di elementi nell'indice Ad esempio se ws è 1, il numero rispettivo di elementi negli indici è 1, ma se ws è> 1, diciamo 3, il numero rispettivo di elementi nell'indice è 3 e gli elementi vengono saltati 1 per 1, corrispondente a 3,5,7.
Tuttavia, mi piacerebbe evitare i loop poiché tendono ad essere molto lenti in R. Avete suggerimenti su come ottenere tali risultati solo con operazioni vettoriali? o qualche altra soluzione più croccante?
Grazie!
questo è super cranstastico! :-) grazie. – Dnaiel