2

这听起来可能很愚蠢,但是:

我有一个列表,列出了我在循环中执行过 pca 的每个国家/地区 BE、AT、DE 等:

countries <- c("BE","BG","CZ","DK","DE","EE","IE","EL","ES","FR",
               "HR","IT","CY","LV","LT","HU","MT","NL","AT","PL","PT",
               "RO","SI","SK","FI","SE","UK")

for (x in countries){
  pca_list[[x]] <_ prcomp(pcaData_list[[x]], scale=TRUE)
}

接下来我想要一个漂亮的双标图,所以我使用来自 github("vqv/ggbiplot") 的 ggbiplot,所以我将 ggbiplot 放在循环中,我有以下内容:

for (x in countries){
  pca_list[[x]] <- prcomp(pcaData_list[[x]],scale=TRUE)
  ggbiplot(pca_list$x,scale=1,varname.size =0,varname.abbrev=1)
}

但是,它不起作用。我尝试在 ggbiplot 命令中替换pca_list$xwith paste0("pca_list$",x),但它仍然不起作用。

两次尝试都给我一个错误:

需要类 prcomp、princomp、PCA 或 lda 的对象

此外,当我对一个特定国家/地区执行相同操作时,说 AT 我确实得到了结果。

ggbiplot(pca_list$AT,scale=1,varname.size =0,varname.abbrev=1)
4

1 回答 1

0

使用$运算符访问列表的元素不允许变量替换。因此,当您指定 时pca_list$x,R 在列表中搜索字面标记为“x”的项目,该项目不存在(因此属于“NULL”类)。您可能需要将代码更改为:

for (x in countries){
  pca_list[[x]] <- prcomp(pcaData_list[[x]],scale=TRUE)
  ggbiplot(pca_list[[x]],scale=1,varname.size =0,varname.abbrev=1) # note the change here
}
于 2019-03-10T14:31:22.577 回答