PCA 旋转缺少 PC1 列

Missing PC1 column to a PCA rotation

我正在尝试对经典 Iris 数据集进行 PCA。这是我的代码:

library(tidyverse)

x <- iris[,1:4] %>% as.matrix()
pca <- prcomp(x, scale. = TRUE)
summary(pca)

组件旋转具有 Petal.Length、Petal.Width 等的每个值。所以我尝试了这个:

as.data.frame(pca$rotation) %>% pivot_longer(-1, names_to = "components", values_to = "value")

我知道肯定有错,因为 pca$rotation 是一个矩阵,不知何故 PC1 被遗漏了。预期结果应该是:

terms          value component 
   <chr>          <dbl> <chr>   
 1 Sepal.Length  0.521  PC1     
 2 Sepal.Width  -0.269  PC1    
 3 Petal.Length  0.580  PC1    
 4 Petal.Width   0.565  PC1    
 5 Sepal.Length -0.377  PC2    
 6 Sepal.Width  -0.923  PC2     
 7 Petal.Length -0.0245 PC2      
 8 Petal.Width  -0.0669 PC2      
 9 Sepal.Length  0.720  PC3      
10 Sepal.Width  -0.244  PC3      
11 Petal.Length -0.142  PC3      
12 Petal.Width  -0.634  PC3    
13 Sepal.Length  0.261  PC4     
14 Sepal.Width  -0.124  PC4    
15 Petal.Length -0.801  PC4      
16 Petal.Width   0.524  PC4

-1 指定要包括哪些变量的第一列被遗漏了(您可能误读了行名称,这些行名称通常被 tidyverse 机器忽略,作为第一列)。怎么样

pca$rotation %>%
    as.data.frame() %>%
    rownames_to_column("term") %>%
    as_tibble() %>%    ## cosmetic
    pivot_longer(starts_with("PC"), 
                 names_to = "components", 
                 values_to = "value")

?