Как извлечь имена строк после реализации PCA? - PullRequest
0 голосов
/ 07 мая 2018

Я уменьшаю размер тестового DataFrame (содержит 30 строк и 750 столбцов) с моделью PCA с PCA (с использованием библиотеки FactoMineR) следующим образом:

pca_base <- PCA(test, ncp=5, graph=T)

Я использовал функцию dimdesc () [in FactoMineR], для описания измерения, чтобы определить наиболее значимые переменные с данным основным компонентом следующим образом:

pca_dim<-dimdesc(pca_base)

pca_dim - список из 3-х длин.

Мой вопрос: как мне извлечь названия строк pca_dim из списка [1] и списка [2] ??.

Я пытаюсь этот код:

#to select dim 1,2 use axes
pca_dim<-dimdesc(pca_base,axes = c(1,2))

rownames(pca_dim[[1]])

Но результат был НЕДЕЙСТВИТЕЛЕН.

Для краткости я буду использовать демонстрационные наборы данных decathlon2 из пакета factoextra: data (decathlon2) Он содержит 27 человек (спортсменов), описанных 13 переменными.

library(factoextra)
data(decathlon2)


decathlon2.active <- decathlon2[1:23, 1:10]
res.pca <- PCA(decathlon2.active,scale.unit = TRUE, graph = FALSE)

res.desc <- dimdesc(res.pca, axes = c(1,2))

Спасибо!

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Если у вас есть проблемы такого рода, для доступа к информации о R-объекте лучший способ их решения - начать с изучения вывода функции str.

str(pca_dim)
#List of 2
# $ Dim.1:List of 1
#  ..$ quanti: num [1:8, 1:2] 0.794 0.743 0.734 0.61 0.428 ...
#  .. ..- attr(*, "dimnames")=List of 2
#  .. .. ..$ : chr [1:8] "Long.jump" "Discus" "Shot.put" "High.jump" ...
#  .. .. ..$ : chr [1:2] "correlation" "p.value"
# $ Dim.2:List of 1
#  ..$ quanti: num [1:3, 1:2] 8.07e-01 7.84e-01 -4.65e-01 3.21e-06 9.38e-06 ...
#  .. ..- attr(*, "dimnames")=List of 2
#  .. .. ..$ : chr [1:3] "Pole.vault" "X1500m" "High.jump"
#  .. .. ..$ : chr [1:2] "correlation" "p.value"

Итак, структура объекта проста, это список из двух списков. В каждом из этих подсписков есть только один член - матрица с установленным атрибутом dimnames.
Таким образом, вы можете использовать стандартные функции доступа для получения этих атрибутов.

rownames(pca_dim$Dim.1$quanti)
#[1] "Long.jump"    "Discus"       "Shot.put"     "High.jump"    "Javeline"    
#[6] "X400m"        "X110m.hurdle" "X100m"

rownames(pca_dim$Dim.2$quanti)
#[1] "Pole.vault" "X1500m"     "High.jump"
0 голосов
/ 07 мая 2018

Вы должны переместить результат dimdesc в data.frame для каждого элемента, например:

rownames(data.frame(res.desc[1]))
[1] "Long.jump"    "Discus"       "Shot.put"     "High.jump"    "Javeline"     "X400m"        "X110m.hurdle"
[8] "X100m"       
> rownames(data.frame(res.desc[2]))
[1] "Pole.vault" "X1500m"     "High.jump" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...