当列表作为列名给出时格式更改

Format change when list is given as column names

我已经从下面的代码创建了间隔列表。

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)
})

我有另一个包含 105 列的数据集 df。

我正在尝试将列名称作为班次间隔。

但格式正在改变。我希望我的列名与班次相同。我正在尝试如下。

list <- unlist(shifts, recursive = FALSE)

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

失败的原因是 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 的列了:)