Es gibt mindestens vier Probleme mit Ihrem Code, 1 kleinere und 3 großen:
1) Es gibt einen Tippfehler im Namen ist, Sie wahrscheinlich gemeint insertionsort_function
(was unnötig ausführlich ist - warum nicht nur insertionsort
)
2) Sie sind nicht etwas zurück. Wenn Sie eine sortierte Kopie des ursprünglichen Arrays zurückgeben möchten, müssen Sie A
als letzte Zeile der Funktion angeben. R gibt den letzten Ausdruck in einer Funktionsdefinition zurück.
3) A[j] > key
sollte A[i] > key
4) &
(werden, die für Vektoren ist) sollten durch &&
ersetzt werden (die für die logischen Bedingungen ist).
machen diese Veränderungen ergibt:
insertionsort_function <- function(A){
for (j in 2:length(A)) {
key = A[j]
# insert A[j] into sorted sequence A[1,...,j-1]
i = j - 1
while (i > 0 && A[i] > key) {
A[(i + 1)] = A[i]
i = i - 1
}
A[(i + 1)] = key
}
A
}
Zum Beispiel
> insertionsort_function(c(5, 2, 4, 6, 1, 3))
[1] 1 2 3 4 5 6
ich davon überzeugt bin, nicht, dass R eine gute Sprache ist es, die absoluten Grundlagen der Programmierung für das Lernen. Wenn Sie die Programmierung speziell in R lernen wollen, würde ich ein Buch empfehlen, in dem explizit R programmiert wird. Zum Beispiel fand ich das Buch Hands-On Programming with R einen guten Startpunkt. Es ist eine kurze Lektüre, die die Grundlagen der Programmierung in einem R-Kontext lehrt.
Bitte poste deinen Code, kein Bild davon. Was ist deine Frage? – etienne
mein Code ist wie unten im Bild: –
Hier ist keine Frage. – tkerwin