Изменение формата, когда список задан как имена столбцов - PullRequest
0 голосов
/ 18 марта 2019

Я создал список интервалов снизу кода.

library(lubridate)    
date1 <- ymd_hms("2000-01-01 05:30:00",tz = "US/Eastern")  
shifts <- lapply(0:14, function(x){
  mapply(function(y,z){
    interval((date1+days(x)+minutes(y)), (date1+days(x)+minutes(y+z)))
  }, y = c(0,150,390,570,690,810,1050), z = c(600,570,600,600,600,600,600), SIMPLIFY = FALSE)
})

У меня есть другой набор данных df с 105 столбцами.

Я пытаюсь дать имена столбцов в качестве интервалов смен.

Но формат меняется. Я хочу, чтобы имена моих столбцов совпадали с именами смен. Я пытаюсь, как показано ниже.

list <- unlist(shifts, recursive = FALSE)

colnames(df)<-as.date(list)

1 Ответ

1 голос
/ 18 марта 2019

Причиной сбоя является то, что list по-прежнему имеет тип interval.Если вы хотите использовать содержимое этого interval как colnames, вам необходимо преобразовать их в list символов, например:

list <- unlist(shifts, recursive = FALSE)
dmy <- list()
for(i in 1:length(list)){
    foo <- c(list[[i]])
    foo <- as.character(foo)
    dmy <- append(dmy, foo)
}
colnames(df) <- dmy # list of characters

Вывод:

> class(list[[1]])
[1] "Interval"
attr(,"package")
[1] "lubridate"
> class(dmy[[1]])
[1] "character"

Теперь вы сможете переименовать столбцы df:)

...