Есть ли способ в R хранить каждую итерацию al oop в отдельной переменной? - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь сохранить некоторые описательные таблицы в отдельных переменных. В частности, я суммирую данные в виде таблиц, которые очерчивают список стран и населения для каждой страны за определенный год (1987-2016). Каждая итерация представляет год. Мой текущий повтор l oop (см. Ниже) отлично работает, но я хотел бы иметь возможность хранить каждую итерацию в отдельной переменной, чтобы позже я мог объединить эти переменные в наглядное описание.

x = 1987
repeat {
  print(subset(data, year == x) %>%
    group_by(country) %>%
    summarize(sum(population)))
    x = x + 1
    if (x > 2016) {
    break
    }
  }

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 10 июля 2020

Вы можете сохранить результаты в виде списка:

x = 1987
l <-list()
repeat {
  l[[as.character(x)]]<-print(subset(data, year == x) %>%
    group_by(country) %>%
    summarize(sum(population)))
    x = x + 1
    if (x > 2016) {
    break
    }
  }
l
0 голосов
/ 10 июля 2020

Вы можете сделать это с помощью assign() следующим образом:

for (i in 1990:2000) {
  assign(paste0('year_', i, "_dat"), i)
}

Не уверен, что это лучший способ выполнить sh вашу большую задачу, но assign() сделает то, что вы хотите. Похоже, что i будет фреймом данных в вашем случае, который будет работать нормально.

assign() создает переменную в среде и принимает имя и объект в качестве аргументов - идеально для вашего случая. Мы можем использовать paste0(), чтобы динамически генерировать имя переменной с чем-то, что мы перебираем в цикле, и давать ему любой объект для присвоения этому имени.

...