3

私のデータフレームは次のとおりです。

> 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

何が起こっているのか、どうすればこのエラーを回避できるのかを理解するのを手伝ってくれる人はいますか? ありがとう。

4

1 に答える 1

4

私が見る主な違いはTestID、最初のバージョンの変数が(ベクトル)factor [1, 1]ではなく (行列) であることです。Factor

最初のバージョン:

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

2 番目のバージョンに変換します。

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
于 2013-04-29T22:23:40.897 に答える