当列表作为列名给出时格式更改
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
的列了:)
我已经从下面的代码创建了间隔列表。
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
的列了:)