NextMethod()中的Rbind抛出错误:无效值

时间:2013-04-29 22:14:42

标签: r rbind

我的数据框如下:

> t
     Day TestID VarID
1 2013-04-27  Total Total

> str(t)
'data.frame':   1 obs. of  3 variables:
 $ Day   : Date, format: "2013-04-27"
 $ TestID: factor [1, 1] Total
  ..- attr(*, "levels")= chr "Total"
 $ VarID : Factor w/ 3 levels "0|0","731|18503",..: 3

当我尝试做一个rbind时,我收到以下错误

> rbind(t,t)
Error in NextMethod() : invalid value

但是当我尝试直接重新创建数据框时,我没有收到该错误:

> t <- data.frame(Day = as.Date("2013-04-27"),TestID = "Total", VarID = "Total")
> t
     Day TestID VarID
1 2013-04-27  Total Total
> str(t)
'data.frame':   1 obs. of  3 variables:
 $ Day   : Date, format: "2013-04-27"
 $ TestID: Factor w/ 1 level "Total": 1
 $ VarID : Factor w/ 1 level "Total": 1
> rbind(t,t)
     Day TestID VarID
1 2013-04-27  Total Total
2 2013-04-27  Total Total

任何人都可以帮我弄清楚发生了什么,我该如何避免这个错误。 感谢。

1 个答案:

答案 0 :(得分:4)

我看到的主要区别是第一个版本中的TestID变量是factor [1, 1](矩阵)而不是Factor(向量)

第一版:

t1 <- data.frame(Day = as.Date("2013-04-27"),
                 TestID = "Total", VarID = "Total")
rbind(t1,t1)

转换为第二版:

t2 <- t1
dim(t2$TestID) <- c(1,1)
str(t2$TestID)
##  factor [1, 1] Total
##  - attr(*, "levels")= chr "Total"
rbind(t2,t2)
## Error in NextMethod() : invalid value

修复受损版本:

t3 <- t2
t3$TestID <- drop(t3$TestID)
rbind(t3,t3)  ## works