expss tab_pivot() ничего не возвращает из цикла for

#r #expss

#r #expss

Вопрос:

expss отлично подходит для моих целей, но у меня с ним небольшая проблема.

Попытка 1 (не работает): когда я использую expss для фрейма данных, все работает нормально, но затем я хочу подмножить фрейм данных, а затем вызвать expss для каждого подмножества. Для подмножества и вызова expss я использую цикл for. Фрейм данных является подмножеством правильно, но expss ничего не возвращает.

 


municipal_lists <- unique(leeftijd1$Regio)[1:3]

for (i in seq_along(municipal_lists)){
  zx <-subset(leeftijd1, leeftijd1$Regio == municipal_lists[i])
  zx %>%
    expss::tab_rows(Regio) %>%
    expss::tab_cells(`Leeftijdscategorie 1`) %>%
    expss::tab_cols(Perioden) %>%
    expss::tab_stat_cases() %>%
    expss::tab_pivot() 

}

  

Попробуйте 2 (не работает):
Затем я создал функцию для всех вызовов exps. Когда я использую эту функцию во фрейме данных, она работает. Но если я помещу эту функцию в цикл for, функция ничего не вернет.

 get_table <-function(zx){
    zx %>%
    expss::tab_rows(Regio) %>%
    expss::tab_cells(`Leeftijdscategorie 1`) %>%
    expss::tab_cols(Perioden) %>%
    expss::tab_stat_cases() %>%
    expss::tab_pivot() #%>%


}



municipal_lists <- unique(leeftijd1$Regio)[1:3]

for (i in seq_along(municipal_lists)){
  zx <-subset(leeftijd1, leeftijd1$Regio == municipal_lists[i])
  get_table(zx)

}
  

Функция работает: вызов функции работает без цикла for, но для всего фрейма данных (с фиксированным индексом)

 

get_table <-function(zx){
    zx %>%
    expss::tab_rows(Regio) %>%
    expss::tab_cells(`Leeftijdscategorie 1`) %>%
    expss::tab_cols(Perioden) %>%
    expss::tab_stat_cases() %>%
    expss::tab_pivot() 


}



municipal_lists <- unique(leeftijd1$Regio)[1:3]
 zx <-subset(leeftijd1, leeftijd1$Regio == municipal_lists[1])
 get_table(zx)



  

Прямой вызов работает: простейшая форма без цикла for или без вызова функции работает так, как ожидалось.

 


  zx <- leeftijd1
  zx %>%
    expss::tab_rows(Regio) %>%
    expss::tab_cells(`Leeftijdscategorie 1`) %>%
    expss::tab_cols(Perioden) %>%
    expss::tab_stat_cases() %>%
    expss::tab_pivot() 


  

Итак, как мне получить таблицу expss для каждого подмножества большего фрейма данных? Не мог бы кто-нибудь подсказать мне, пожалуйста.

Ответ №1:

Вам нужно что-то сделать с результатом ваших вычислений внутри цикла. Вы можете распечатать их, например:

 municipal_lists <- unique(leeftijd1$Regio)[1:3]

for (i in seq_along(municipal_lists)){
  zx <-subset(leeftijd1, leeftijd1$Regio == municipal_lists[i])
  zx %>%
    expss::tab_rows(Regio) %>%
    expss::tab_cells(`Leeftijdscategorie 1`) %>%
    expss::tab_cols(Perioden) %>%
    expss::tab_stat_cases() %>%
    expss::tab_pivot()  %>%
    print()

}