Какие моменты следует учитывать при выборе между seq_along () и 1: length () - PullRequest
1 голос
/ 18 апреля 2020

Недавно я наткнулся на фрагмент кода от другого пользователя R в Stackoverflow, который напечатал list из data.frames, используя kableExtra, после следующего начального for l oop for (i in 1:length(listofdfs)), за которым следует соответствующий функция. До сих пор я всегда использовал for (i in seq_along(listofdfs)), чтобы выполнить работу. Сравнение обоих методов на некотором случайном data.frames не показало каких-либо различий (см. Ниже).

Мне было интересно, может ли кто-нибудь подробно остановиться на вопросах, которые следует учитывать при применении любого метода на практике независимо от печати dfs и т. Д. c. К сожалению, документация R не содержит какой-либо информации по этому параметру c topi c.

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

library (dplyr)
library (kableExtra)

# Some random data
city <- rep(c(1:3), each = 4) %>% factor ()
gender <- rep(c("m", "f", "m", "f", "m", "f", "m", "f", "m", "f", "m", "f"))
age <- c(32, 54, 67, 35, 19, 84, 34, 46, 67, 41, 20, 75)
working_yrs <- c(16, 27, 39, 16, 2, 50, 16, 23, 48, 21, 0, 57)

# Generating list of dfs by group split
listcity <- data.frame(city, gender, age, working_yrs) %>% group_split (city, keep=TRUE)

# for loop using seq_along
for (i in seq_along(listcity)) {
  print(
    kable(listcity[[i]], caption = "Using seq_along") %>%
      kable_styling("striped", bootstrap_options = "hover", full_width = FALSE)
  )}

# for loop using 1:length
for (i in 1:length(listcity)) {
  print(
    kable(listcity[[i]], caption = "Using 1:length") %>%
      kable_styling("striped", bootstrap_options = "hover", full_width = FALSE)
  )}
...