Я пытаюсь написать функцию для сортировки вектора, но без использования встроенной функции R сортировки.Мой код:
sorting <- function(x){
for(i in 1:length(x)){
for(j in (i+1):length(x)){
if(x[i] > x[j]){
x[c(i,j)] = x[c(j,i)]
}
}
}
x
}
Я получаю вывод ниже:
> x <- c(3,1,4,7,2,9)
> sorting(x)
Error in if (x[i] > x[j]) { : missing value where TRUE/FALSE needed
>
Я понимаю, что мы получим ошибку выше, когда условие 'IF' вернет 'NA' вместо ИСТИНА / ЛОЖЬ.
Есть ли проблема с оператором:
for(j in (i+1):length(x)){
Код Python для того же:
def sorting(a):
for i in range(len(a)):
for j in range(i+1,len(a)):
if a[i] > a[j]:
a[i],a[j] = a[j],a[i]
return a
Вывод:
sorting([3,1,4,7,2,9])
Out[380]: [1, 2, 3, 4, 7, 9]
InPython, код работает нормально.
Может кто-нибудь сообщить мне проблему с моим кодом R.