Итерация для получения имен корреляционных переменных - PullRequest
1 голос
/ 24 февраля 2020

У меня есть матрица ABS.Matrix, которая содержит абсолютное значение корреляционной матрицы. Размер матрицы - 224 * 224.

. Для всех переменных мне нужно выбрать имя первых 10 самых больших корреляций.

Для переменной-сигнатуры я могу определить ее следующим образом:

A<-head(colnames(rbind(sort(ABS.Matrix[,2],decreasing=TRUE))),10)
B<-head(colnames(rbind(sort(ABS.Matrix[,224],decreasing=TRUE))),10)

Это, например, для переменной n.2 e 224.

Если я сделаю:

cbind(A,B)

Я получу матрицу, в которой два столбца являются первыми 10 самые большие корреляционные имена переменных. Мне нужно сделать итерацию и получить одинаковые результаты для всех 224 переменных.

Я пытался:

for (k in 1:224){
  X[k]=head(colnames(rbind(sort(ABS.Matrix[,k],decreasing=TRUE))),10) 
}

, чтобы получить результаты для всех переменных, но я получаю ошибку "число заменяемые элементы не кратны длине замены ".

Как мне сделать это правильно? Есть более простой способ?

1 Ответ

0 голосов
/ 24 февраля 2020

Мы можем упростить и использовать применение к столбцам, чтобы получить желаемый результат:

k <- apply(ABS.Matrix, 2, function(x) names(sort(x, decreasing=TRUE))[1:10])

Объяснение: Для каждого столбца в ABS.Matrix мы делаем:

  1. Сортировать столбец в порядке убывания
  2. Используйте names для получения имен строк
  3. Выберите первые 10 элементов

В результате получается матрица символов

Изменить:

Пример:

1.Создать минимальный воспроизводимый пример данные:

set.seed(145)
ABS.Matrix <- matrix(runif(4*4), ncol=4)
rownames(ABS.Matrix) <- paste0("r", 1:4)
colnames(ABS.Matrix) <- paste0("c", 1:4)

Пример данных:

ABS.Matrix
          c1        c2        c3        c4
r1 0.7539312 0.7042628 0.8561452 0.7011781
r2 0.5340212 0.6432927 0.9614117 0.4876268
r3 0.8568702 0.9716768 0.9147102 0.6565614
r4 0.9237723 0.8538198 0.0656714 0.1375255

2. Используйте код сверху:

k <- apply(ABS.Matrix, 2, function(x) names(sort(x, decreasing=TRUE))[1:2])

k сейчас:

      c1   c2   c3   c4  
[1,] "r4" "r3" "r2" "r1"
[2,] "r3" "r4" "r3" "r3"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...