【问题标题】:PCA on transposed data转置数据的 PCA
【发布时间】:2023-04-04 12:49:02
【问题描述】:

我正在使用 R 进行一些 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

【问题讨论】:

    标签: r pca


    【解决方案1】:

    当缺少数据并且您尝试使用包含所有变量的公式时,R 似乎不喜欢它。所以这最终起作用了:

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

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

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。对我来说,当我将列名(数字除外)分配给我的data.frame 时,它就起作用了。 例如,当colnames(mydf)(1,2,3,4,5) 时,我得到了这个错误:

      Error in [.data.frame(mf, , x) : undefined columns selected
      

      我所做的是:

      colnames(mydf) <- paste("var", 1:5, sep="")
      

      然后运行princomp函数:

      mypca <- princomp(~. , data=myrdf, cor=F, na.action=na.exclude)
      

      没有问题。

      【讨论】:

        猜你喜欢
        • 2023-03-22
        • 2015-09-17
        • 1970-01-01
        • 1970-01-01
        • 2014-11-28
        • 2019-12-09
        • 2015-10-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多