цикл по символам в r для ggbiplot / ggplot - PullRequest
1 голос
/ 10 марта 2019

Звучит глупо, но:

У меня есть список для каждой страны BE, AT, DE и т. Д., В котором я выполнял pca, в цикле:

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)
}

ДалееМне нужен хороший биплот, поэтому я использую ggbiplot от github («vqv / 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)
}

Однако это не такт работа.Я попытался заменить pca_list$x на paste0("pca_list$",x) в команде ggbiplot, но она все еще не работает.

Обе попытки выдают ошибку:

Ожидается объекткласс prcomp, princomp, PCA или lda

Далее, когда я делаю то же самое для конкретной страны, скажем, AT я получаю результат.

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

1 Ответ

0 голосов
/ 10 марта 2019

Использование оператора $ для доступа к элементам списка не допускает подстановку переменных. Поэтому, когда вы указываете 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
}
...