Вот мой пример.
my_df <- data.frame(col_1 = c(1,2), col_2 = c(as.Date('2018-11-11'), as.Date('2016-01-01'))) dates_list <- my_df$col_2 for(el in dates_list){ print(el) }
Генерирует:
17846 16801
Как вместо этого выводить даты? Я могу сделать это с явным индексом, но хотел бы иметь более простое решение
Вы также можете использовать функцию as_date от lubridate.
as_date
library(lubridate) for(i in dates_list){ print(as_date(i)) } [1] "2018-11-11" [1] "2016-01-01"
Причиной проблемы может быть то, что dates_list <- my_df$col_2 приводит столбец к вектору даты:
dates_list <- my_df$col_2
dates_list <- my_df$col_2 class(dates_list) > [1] "Date"
так что другое решение было бы решить эту проблему следующим образом:
dates_list <- my_df["col_2"] class(dates_list) [1] "data.frame" for(el in dates_list){ print(el) } [1] "2018-11-11" "2016-01-01"
1) Использование as.list:
as.list
for(el in as.list(dates_list)) { print(el) }
дает:
[1] "2018-11-11" [1] "2016-01-01"
2) или не так хорошо, но можно перебирать индексы:
for(i in seq_along(dates_list)) { print(dates_list[i]) }