2017-01-16 4 views
1

Возможно, это очень простой вопрос, но я не смог найти ответ. Я пытаюсь применить abs на моей матрице, а затем применить order к первому столбцу (по убыванию).Порядок по колонке с помощью оператора infix

В отдельных строках он выглядит следующим образом:

pcaRotaMat <- abs(pcaImportance$rotation) 
temp <- pcaRotaMat[order(-pcaRotaMat[,1]),] 

Однако, когда я пытаюсь использовать оператор инфиксного (%>%), я получаю следующее сообщение об ошибке:

t <- pcaImprtance$rotation %>% abs() %>% order(-[,1],) 

Error: unexpected '[' in "t <- pcaImprtance$rotation %>% abs() %>% order(["

Ваша помощь будет оценена по достоинству.

ответ

1

Если вы знакомы с чем-то более многословным:

sort_fn = function(x) { 
    x[order(-x[ ,1]), ] 
} 

t <- pcaImprtance$rotation %>% abs() %>% sort_fn 

Вариант 2:

t <- pcaImprtance$rotation %>% abs %>% .[order(-.[, 1]), ] 

: Если вы не хотите, чтобы создать функцию для сортировки "" здесь место для матрицы. Я также не рекомендую назначать переменные «t», так как это функция, которая переносит матрицы.

+0

Большое спасибо! ваш второй вариант очень элегантный. Я использовал 't' только для вопроса, который я разместил здесь. (Но спасибо за комментарий - я не буду использовать его в своих вопросах, чтобы все было просто) – staove7

Смежные вопросы