我从下面的代码创建了间隔列表。
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)
答案 0 :(得分:1)
失败的原因是因为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
的列了:)