我将原来的问题转化为这个玩具问题:
我有这个:
x <- c()
rep(time_factor[1], 3)
[1] [0,1) [0,1) [0,1)
Levels: [0,1) [1,15) [15,30) [30,40) [40,60]
但当我append
时,我无法以&#34; [0,1)&#34;的形式获得这些因素。 。我该如何解决这个问题?
append(x, rep(time_factor[1],3))
[1] 1 1 1
答案 0 :(得分:0)
append
对因素不起作用的原因是基础函数c
没有factors
的方法。那么为什么不自己动手呢?下面的方法似乎适用于您的情况。不确定它是否适用于您想要组合因子的所有可能情况。
# reproducible example
time_factor <- cut(.5, c(0,1,15, 30, 40, 60), right=FALSE)
x <- c()
#
# original version
c(time_factor[1], time_factor[1])
# [1] 1 1
append(x, rep(time_factor[1], 3))
# [1] 1 1 1
#
# c method for factors
c.factor <- function(...){
y <- do.call(c, lapply(list(...), as.character))
factor(y, unique(unlist(lapply(list(...), levels))))
}
#
# same as before with c.factor in global environment
c(time_factor[1], time_factor[1])
# [1] [0,1) [0,1)
# Levels: [0,1) [1,15) [15,30) [30,40) [40,60)
append(x, rep(time_factor[1], 3))
# [1] [0,1) [0,1) [0,1)
# Levels: [0,1) [1,15) [15,30) [30,40) [40,60)