R语言如何通过索引表选取主数据表指定列开展PCA分析
解决方案
R的data.frame支持直接传入列名字符串向量筛选多列,刚好适配你SM表ID列存储200个目标列名的场景,完全不需要手动逐个输入列名,核心代码如下:
# 直接用SM$ID存储的列名筛选tab的对应列 fit.std <- prcomp(tab[, SM$ID], scale. = TRUE)
注意事项
- 你示例里写的
promo是prcomp的笔误,上面代码直接可用 - 如果SM的ID列是因子类型而非字符串类型,需要先转成字符格式避免索引错误:
fit.std <- prcomp(tab[, as.character(SM$ID)], scale. = TRUE) - 可提前校验列名匹配情况,避免运行报错:
# 校验所有目标列是否都存在于tab中,返回TRUE则无问题 all(SM$ID %in% colnames(tab)) # 如果返回FALSE,可执行下面代码查看缺失的列名 setdiff(SM$ID, colnames(tab))
内容的提问来源于stack exchange,提问作者Screamh
相关产品推荐
相关产品推荐

