ich einen Vektor von Breiten haben,R konvertieren Vektor von Zahlen Überspringen Indizes
ws = c(1,1,2,1,3,1)
Von diesem Vektor würde Ich mag einen anderen Vektor dieser Form haben:
indexes = c(1,2,3,5,6,7,9,11,12)
Um zu erstellen solcher Vektor habe ich die folgenden für die Schleife in 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
}
die Logik ist wie folgt, legt jedes Element in ws die JEWEILIGEN e Anzahl der Elemente im Index. Zum Beispiel, wenn ws 1 ist, ist die entsprechende Anzahl von Elementen in Indizes 1, aber wenn ws> 1 ist, sagen wir 3, ist die entsprechende Anzahl von Elementen im Index 3 und die Elemente werden 1-mal-1 übersprungen. entsprechend 3,5,7.
Allerdings möchte ich for-Schleifen vermeiden, da sie in R sehr langsam sind. Haben Sie Vorschläge, wie Sie solche Ergebnisse nur mit Vektoroperationen erzielen können? oder eine etwas kretsastische Lösung?
Danke!
das ist super cantastic! :-) Danke. – Dnaiel