【问题标题】:R- infinite or missing values in 'x' for prcomp()R- prcomp() 的“x”中的无限或缺失值
【发布时间】:2020-07-16 15:02:24
【问题描述】:
Error in svd(x, nu = 0, nv = k) : infinite or missing values in 'x'

我正在使用prcomp() 并收到此错误消息。我试图做一个reprex,但无法重现该错误。我试过了:

df[is.na(df)] <- 0##NA values to 0
df <-df[which(rowSums(df) > 0),]##rm rows with only zeros
df <- df[, colSums(df != 0) > 0]##rm cols with only zeros

df 是一个data.frame,即list 而不是numeric。我已经没有想法了!我还能尝试什么?

【问题讨论】:

    标签: r prcomp


    【解决方案1】:

    虽然其中大部分看起来是正确的,但在这里可能会有所帮助的一件事是更改检查零列的方式。在这个问题上,最好检查length(unique(x)) 或者更好的var(x) &lt; 10^-13(X 几乎没有变化,所以它几乎只有 1 个值)。

    df[is.na(df)] <- 0
    infs <- apply(df, 2, is.infinite)
    rowswithinf <- rowsums(infs) > 0
    #df[infs]  #handle infinite rows
    #df[rowswithinf, ]  #Handle infinite rows
    df <- df[!rowswithinf, ]
    
    # Handle columns that almost only have 1 value:
    nzv <- sapply(df, var) < 10^-13
    df <- df[, !nzv]
    prcomp(df)
    

    【讨论】:

    • 我编辑了我的帖子。所以你的第一句话不再是真的。谢谢
    猜你喜欢
    • 2015-01-27
    • 2014-02-20
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    相关资源
    最近更新 更多