2013-01-14 31 views
0

我使用R来做一些PCA分析。一切都很好,直到我想到我应该处理数据集的转置。但是,当我尝试在移位数据集上做PCA时,我无法解决它!转置数据上的PCA

> sum(is.na(data_t)) 
[1] 1367 
> dim(data_t) 
[1] 599 9505 
> data_t[1:4,1:4] 
          2'-PDE 7A5  A1BG  A2M 
TCGA.A1.A0SD.01A.11R.A115.07 0.0153750 2.4105 0.9493333 0.24200 
TCGA.A1.A0SE.01A.11R.A084.07 0.4669375 0.3635 0.2798333 1.03850 
TCGA.A1.A0SH.01A.11R.A084.07 -0.0295625 1.8550 0.7486667 1.16050 
TCGA.A1.A0SJ.01A.11R.A084.07 0.7919375 1.4080 0.7500000 1.67775 

> pca2<-princomp(~.,data=data_t, na.action=na.omit) 
Error in `[.data.frame`(mf, , x) : undefined columns selected 

> pca2<-princomp(data_t, na.action=na.omit) 
Error in princomp.default(data_t, na.action = na.omit) : 
    'princomp' can only be used with more units than variables 

原来,如果变量多于单位,则不能使用princomp。但你可以使用prcomp(见R - 'princomp' can only be used with more units than variables),但我仍然有错误!

> pca2<-prcomp(data_t,na.action=na.omit) 
Error in svd(x, nu = 0) : infinite or missing values in 'x' 

> pca2<-prcomp(~ ., data=data_t, na.action=na.omit, scale=TRUE) 
Error in `[.data.frame`(mf, , x) : undefined columns selected 

回答

2

看起来像R不喜欢它,当你有数据丢失,并且你尝试使用一个公式与所有的变量。所以这结束了工作:

pca2<-prcomp(na.omit(data_t), scale=TRUE) 

当然,这忽略了那些缺少数据的列。