Проблема здесь аналогична с предыдущей , но здесь нам не нужно делать какие-либо вычисления, а просто строить списки
У меня есть список регионов мира:
list.asia <- c("Central Asia", "Eastern Asia", "South-eastern Asia", "Southern Asia", "Western Asia")
list.africa <- c("Northern Africa", "Sub-Saharan Africa", "Eastern Africa", "Middle Africa", "Southern Africa", "Western Africa")
Я использую R library("ISOcodes")
для создания списков стран с трехзначным форматом ISO Alpha следующим образом:
region <- subset(UN_M.49_Regions, Name %in% list.asia)
subset <- subset(UN_M.49_Countries, Code %in% unlist(strsplit(region$Children, ", ")))
subset$ISO_Alpha_3
Этот пример с list.asia
дает ожидаемый результат:
[1] "AFG" "ARM" "AZE" "BHR" "BGD" "BTN" "BRN" "KHM" "CHN" "HKG" "MAC" "CYP" "PRK"
[14] "GEO" "IND" "IDN" "IRN" "IRQ" "ISR" "JPN" "JOR" "KAZ" "KWT" "KGZ" "LAO" "LBN"
[27] "MYS" "MDV" "MNG" "MMR" "NPL" "OMN" "PAK" "PHL" "QAT" "KOR" "SAU" "SGP" "LKA"
[40] "PSE" "SYR" "TJK" "THA" "TLS" "TUR" "TKM" "ARE" "UZB" "VNM" "YEM"
, который можно легко сохранить следующим образом:
countries.list.asia <- subset$ISO_Alpha_3
Проблема в том, что у меня много регионов, и я бы предпочел сделать цикл.
Для простоты предположим, что у меня есть только 2 списка list.asia
и list.africa
. Я перегруппирую их в новый list.continent
list.continent <- c("list.asia","list.africa")
и тогда я "зацикливаю" список производства: (который не работает)
for(i in list.continent){
list.loop <- sym(i)
region <- subset(UN_M.49_Regions, Name %in% list.loop)
subset <- subset(UN_M.49_Countries, Code %in% unlist(strsplit(region$Children, ", ")))
paste("countries",list.loop, sep=".") <- subset$ISO_Alpha_3
rm(region, subset, list.loop)
}
Ожидаемые результаты (в данном случае) - это 2 новых объекта (список классов) с именами countries.list.asia
и countries.list.africa
, содержащих трехзначные коды ISO стран, присутствующих в этих регионах.
Я пытался заменить list.loop
на !!list.loop
или as.list(list.loop)
, но ничего не работает. Любая идея?