簡體   English   中英

svd(x,nu = 0)中的錯誤:0范圍尺寸

[英]Error in svd(x, nu = 0) : 0 extent dimensions

我試圖在5000列和30行的數據框架上進行PCA

Sample <- read.table(file.choose(), header=F,sep="\t")
Sample.scaled <- data.frame(apply(Sample,2,scale))
pca.Sample <- prcomp(Sample.scaled,retx=TRUE)`

得到了錯誤

Error in svd(x, nu = 0) : infinite or missing values in 'x'

sum(is.na(Sample))
[1] 0

sum(is.na(Sample.scaled))
[1] 90

嘗試使用以下內容忽略所有na值

pca.Sample <- prcomp(na.omit(Sample.scaled),retx=TRUE)

這給出了以下錯誤

Error in svd(x, nu = 0) : 0 extent dimensions

有報告說,na.action需要給出公式,因此嘗試如下

pca.Sample <- prcomp(~.,center=TRUE,scale=TRUE,Sample, na.action=na.omit)

現在收到以下錯誤

Error in prcomp.default(x, ...) :
  cannot rescale a constant/zero column to unit variance

認為問題可能是因為“我的一個數據列是常量。常量的方差是0,然后縮放將除以0,這是不可能的。”

但不確定如何解決這個問題。 任何幫助非常感謝....

sum(is.na(Sample.scaled))出現為90的事實來看,當sum(is.na(Sample))0 ,看起來你有三個常數列。

這是一個隨機生成的(可重現的)示例,它給出了相同的錯誤消息:

Sample <- matrix(rnorm(30 * 5000), 30)
Sample[, c(128, 256, 512)] <- 1

Sample <- data.frame(Sample)
Sample.scaled <- data.frame(apply(Sample, 2, scale))

> sum(is.na(Sample))
[1] 0

> sum(is.na(Sample.scaled))
[1] 90

# constant columns are "scaled" to NA.
> pca.Sample <- prcomp(Sample.scaled,retx=TRUE)
Error in svd(x, nu = 0) : infinite or missing values in 'x'

# 3 entire columns are entirely NA, so na.omit omits every row
> pca.Sample <- prcomp(na.omit(Sample.scaled),retx=TRUE)
Error in svd(x, nu = 0) : 0 extent dimensions

# can't scale the 3 constant columns
> pca.Sample <- prcomp(~.,center=TRUE,scale=TRUE,Sample, na.action=na.omit)
Error in prcomp.default(x, ...) : 
  cannot rescale a constant/zero column to unit variance

你可以嘗試類似的東西:

Sample.scaled.2 <- data.frame(t(na.omit(t(Sample.scaled))))
pca.Sample.2 <- prcomp(Sample.scaled.2, retx=TRUE)

即在轉置上使用na.omit來擺脫NA列而不是行。

如下所示,可以在對數變換后替換負無窮大值。

log_features <- log(data_matrix[,1:8])
log_features[is.infinite(log_features)] <- -99999

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM