Сводка Princomp в качестве датафрейма - PullRequest
0 голосов
/ 05 ноября 2018

Я хочу, чтобы сводка PCA princomp (должна быть princomp) была представлена ​​в виде кадра данных, чтобы можно было отформатировать таблицу с помощью kable для отчета.

Вот код, который я пытался использовать, из этого должно быть ясно, что я хочу сделать;

kable( as.data.frame(summary(pca.data)) )

Я получаю эту ошибку:

Ошибка в as.data.frame.default (сводка (pca.data)): не может быть принудительно приведена класс "" summary.princomp "" в data.frame

РЕДАКТИРОВАТЬ: я хочу, чтобы вывод sum.data в качестве кадра данных, чтобы я мог использовать функцию kable для его форматирования.

library("knitr")
library("kableExtra")

set.seed(1)
data <- data.frame(
X = sample(1:10), X2 = sample(1:10), X3 = sample(1:10), X4 = sample(1:10), 
X5 = sample(1:10)
)

pca.data <- princomp(data, cor=TRUE)
sum.data <- summary(pca.data)
kable(as.data.frame(sum.data))

1 Ответ

0 голосов
/ 05 ноября 2018

Предполагается, что вы пытаетесь получить следующую таблицу

Importance of components:
                          Comp.1    Comp.2    Comp.3     Comp.4     Comp.5
Standard deviation     1.4126051 1.1441266 0.9542661 0.63918520 0.61346533
Proportion of Variance 0.3990906 0.2618052 0.1821247 0.08171154 0.07526794
Cumulative Proportion  0.3990906 0.6608958 0.8430205 0.92473206 1.00000000

, который фактически нигде не хранится и создается только при запуске функции stats:::print.summary.princomp. Вы можете извлечь часть этой функции, которая составляет эту таблицу. Например

pca_importance <- function(x) {
  vars <- x$sdev^2
  vars <- vars/sum(vars)
  rbind(`Standard deviation` = x$sdev, `Proportion of Variance` = vars, 
      `Cumulative Proportion` = cumsum(vars))
}

так что теперь у вас есть объект, который ktable может использовать

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