【问题标题】:PCA analysis in a loop for certain column intervals in RR中某些列间隔的循环PCA分析
【发布时间】:2021-08-20 09:42:42
【问题描述】:

我有一个包含 526 行和 560 列的数据集。在这个数据集中,我想分别在循环中对每 16 列运行 pca 分析并保存每一行的 PCA 分数。我尝试了下面的代码,但没有奏效。我很乐意听取您的建议。

提前感谢您的帮助。

for(i in 1:ncol(df)) {       
  df[ , i:(i+15)] <- prcomp(df[, i:(i+15)], scale. = TRUE, center = T)
}

【问题讨论】:

    标签: r loops pca


    【解决方案1】:

    这是一种带有lapply 循环的方法。创建一个由连续整数组成的向量f,每个整数重复 16 次。然后按此向量和lapply 函数prcomp 将data.frame 名称拆分为每个子集。最后,提取分数。

    f <- c(1, rep(0, 15))
    f <- rep(f, length(names(df1))/16)
    f <- cumsum(f)
    nms <- split(names(df1), f)
    
    pca_list <- lapply(nms, function(x){
      prcomp(df1[x], center = TRUE, scale. = TRUE)
    })
    scores_list <- lapply(pca_list, '[[', 'x')
    

    测试数据创建代码

    set.seed(2021)
    df1 <- replicate(560, rnorm(526))
    df1 <- as.data.frame(df1)
    

    【讨论】:

    • @AlperAdak 很高兴它有帮助。 someone answers您的问题时该怎么办。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多