R:将因子附加到空向量并保留因子值

时间:2014-09-15 11:26:22

标签: r

我将原来的问题转化为这个玩具问题:

我有这个:

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

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)