есть по крайней мере 4 проблемы с вашим кодом, 1 несовершеннолетний и 3 основных:
1) Там опечатка в названии, вам вероятно, имел в виду insertionsort_function
(что понапрасну многословным - почему бы просто не insertionsort
)
2) Вы не возвращение ничего. Если вы хотите вернуть отсортированную копию исходного массива, то A
будет самой последней строкой функции. R возвращает последнее выражение в определении функции.
3) A[j] > key
должно быть A[i] > key
4) &
(который для векторов) следует заменить &&
(которая предназначена для логических условий).
внесении этих изменений дает:
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
}
Например,
> insertionsort_function(c(5, 2, 4, 6, 1, 3))
[1] 1 2 3 4 5 6
Я не уверен, что R является хорошим языком для изучения абсолютных основ программирования. Если вы хотите научиться программированию именно в R, я бы рекомендовал книгу, которая явно использует R для обучения программированию. Например, я нашел книгу Hands-On Programming with R хорошим местом для начала. Это быстрое чтение, которое учит основам программирования в контексте R.
Пожалуйста, разместите свой код, а не его фотографию. Также, каков ваш вопрос? – etienne
мой код ниже, как показано на рисунке: –
Здесь нет вопросов. – tkerwin