小编Bri*_*son的帖子

如何解决prcomp.default():无法将常量/零列重新调整为单位方差

我有一个包含51608个变量(列)的9个样本(行)的数据集,每当我尝试缩放它时,我都会收到错误:

这很好用

pca = prcomp(pca_data)
Run Code Online (Sandbox Code Playgroud)

然而,

pca = prcomp(pca_data, scale = T)
Run Code Online (Sandbox Code Playgroud)

> Error in prcomp.default(pca_data, center = T, scale = T) : 
  cannot rescale a constant/zero column to unit variance
Run Code Online (Sandbox Code Playgroud)

显然,发布一个可重复的例子有点困难.任何想法可能是什么交易?

寻找恒定列:

    sapply(1:ncol(pca_data), function(x){
               length = unique(pca_data[, x]) %>% length
             }) %>% table
Run Code Online (Sandbox Code Playgroud)

输出:

    .
        2     3     4     5     6     7     8     9 
     3892  4189  2124  1783  1622  2078  5179 30741 
Run Code Online (Sandbox Code Playgroud)

所以没有恒定的列.与NA相同 -

    is.na(pca_data) %>% sum

    >[1] 0
Run Code Online (Sandbox Code Playgroud)

这很好用:

    pca_data = scale(pca_data)
Run Code Online (Sandbox Code Playgroud)

但之后两者仍然给出完全相同的错误:

    pca = prcomp(pca_data)
    pca = …
Run Code Online (Sandbox Code Playgroud)

r matrix pca prcomp

13
推荐指数
3
解决办法
2万
查看次数

标签 统计

matrix ×1

pca ×1

prcomp ×1

r ×1