Как использовать цикл for в R вместо применения в матрице, сохраняя их имена строк - PullRequest
0 голосов
/ 29 декабря 2018

У меня есть матрица "acc", упорядоченная по годам в виде строк.

       J     F     M   
1989 438.1 364.9 400.9  
1990 359.3 397.9 272.0  
1991 295.3 309.8 297.8 

Если я использую команду apply для сортировки столбцов, R не может содержать имена строк в виде матрицы, поэтому мне нужно расположить их по одному для сохранения их так:

         J                 F                 M
1991   295.3      1991   309.8      1990   272.0
1990   359.3      1989   364.9      1991   297.8
1989   438.1      1990   397.9      1989   400.9

Я должен выполнить функцию сортировки по столбцам, но сохраняя их имена строк, поэтому я делаю много массивов, таких как:

J<-sort(acc[,1])
F<-sort(acc[,2])
M<-sort(acc[,3])

Есть ли способ выполнить ту же операцию с циклом и сохранить имена строк?

Спасибо

1 Ответ

0 голосов
/ 30 декабря 2018

Чтобы сделать то, что вы хотите, вы можете сначала сохранить имена строк, отсортировать их по столбцам, а затем переназначить имена строк.

Сначала набор тестовых данных.

acc <- matrix(30:1, nrow = 10)
rownames(acc) <- paste("Year", 1:10, sep = ".")

Теперь код.

rn <- rownames(acc)
acc <- apply(acc, 2, sort)
rownames(acc) <- rn

acc
#        [,1] [,2] [,3]
#Year.1    21   11    1
#Year.2    22   12    2
#Year.3    23   13    3
#Year.4    24   14    4
#Year.5    25   15    5
#Year.6    26   16    6
#Year.7    27   17    7
#Year.8    28   18    8
#Year.9    29   19    9
#Year.10   30   20   10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...