我有一个包含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)