Как заставить функцию упорядочить некоторые значения в матрице в R? - PullRequest
0 голосов
/ 10 февраля 2020

Попытка написать функцию для сортировки матрицы по строкам. Я мог бы написать что-то в l oop над значениями в векторе значений, но не смог добавить сложности, чтобы сделать его l oop над некоторой матрицей.

sww = function(x){
  n <- length(x)

      for(i in 1:(n-1)){

         for (j in (i+1):n) {

        if(x[i] > x[j]){
          tmp = x[i]; x[i] = x[j]; x[j] = tmp
          }


        }

      }
  return(x)
}

Кто-нибудь знает, как это сделать? l oop по всей матрице?

Редактировать:

При сортировке матрицы по строкам я имел в виду такую ​​матрицу:

2 1 4    "Sorted by row"     1 2 4
5 4 0          -->           0 4 5

Спасибо

Edit1: я знаю о функциях r, но хотел бы написать свою собственную

1 Ответ

1 голос
/ 10 февраля 2020

Используйте apply:

m <- matrix(c(2, 5, 1, 4, 4, 0), 2) # test matrix
t(apply(m, 1, sort))
##      [,1] [,2] [,3]
## [1,]    1    2    4
## [2,]    0    4    5

Если вы действительно хотите l oop по строкам:

mm <- m
for(i in 1:nrow(m)) mm[i, ] <- sort(m[i, ])

и, конечно, вы можете заменить sort с вашей собственной версией, если вы будете sh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...