Looping through vector of dates in R drops class info

后端 未结 3 1772
Happy的楠姐
Happy的楠姐 2021-01-23 01:22

Here is my example.

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 d         


        
相关标签:
3条回答
  • 2021-01-23 01:53

    You can also use as_date function from lubridate.

    library(lubridate)
    
    for(i in dates_list){
       print(as_date(i))
    }
    
    [1] "2018-11-11"
    [1] "2016-01-01"
    
    0 讨论(0)
  • 2021-01-23 02:08

    1) Use as.list:

    for(el in as.list(dates_list)) {
      print(el)
    }
    

    giving:

    [1] "2018-11-11"
    [1] "2016-01-01"
    

    2) or not quite as nice but one can iterate over the indexes:

    for(i in seq_along(dates_list)) {
      print(dates_list[i])
    }
    
    0 讨论(0)
  • 2021-01-23 02:10

    The cause of the problem could be that dates_list <- my_df$col_2 coerces the column to a date vector:

    dates_list <- my_df$col_2
    class(dates_list)
    > [1] "Date"
    

    so another solution would be to resolve this, as follows:

    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"
    
    0 讨论(0)
提交回复
热议问题