Wenn Ihr Vektor Maximum
immer 6 Element hat, ist Florian Antwort der einfachste Weg, es zu tun. Aber wenn Ihr Vektor länger dann könnten Sie tun:
z1 = Maximum[seq(from = 2, to = length(Maximum)-1, by = 2)]
z2 = Maximum[seq(from = 3, to = length(Maximum)-1, by = 2)]
z3 = ifelse(z1>z2, z1, z2)
result = Maximum[1] + sum(z3) + Maximum[length(Maximum)]
Zum Beispiel:
Maximum = floor(runif(22, 1, 100))
> Maximum
[1] 96 6 1 10 90 15 58 48 94 97 78 95 42 79 61 25 61 74 93 37 44 22
z1 würden die Elemente sein, sogar bei Indizes (ohne Enden):
> z1
[1] 6 10 15 48 97 95 79 25 74 37
z2 die Elemente bei ungeraden Indizes (ohne Enden):
> z2
[1] 1 90 58 94 78 42 61 61 93 44
und den Maximalwert zwischen z1 und z2 für jeden Index z3:
> z3
[1] 6 90 58 94 97 95 79 61 93 44
Und dann das Ergebnis berechnen durch z3 und den Beginn und das Ende der Maximum
Hinweis hinzugefügt: Die maximale Vektor ein noch haben sollte Anzahl der Elemente.
Kennen Sie die Positionen, die Sie a priori ausschließen möchten? (Dh, werden die übersprungenen Werte immer in diesen Positionen sein?) Oder gibt es eine Regel basierend auf den Werten? – gung
Übersprungene Werte sind immer in diesen Positionen – GR1818