【发布时间】:2015-12-13 00:54:14
【问题描述】:
我的问题包含this answer 中的代码变体。
如下代码:
d <- data.frame()
for (i in 1:3) {d <- rbind(d,c(i+i, i*i, i/1))}
d
str(d)
生成以下输出:
X2 X1 X1.1
1 2 1 1
2 4 4 2
3 6 9 3
'data.frame': 3 obs. of 3 variables:
$ X2 : num 2 4 6
$ X1 : num 1 4 9
$ X1.1: num 1 2 3
但是这段代码:
d2 <- data.frame()
for (i in 1:3) {d2 <- rbind(d2,c(i+i, i*i, i/1, "foo"))}
d2
str(d2)
生成错误的输出:
X.2. X.1. X.1..1 X.foo.
1 2 1 1 foo
2 <NA> <NA> <NA> foo
3 <NA> <NA> <NA> foo
'data.frame': 3 obs. of 4 variables:
$ X.2. : Factor w/ 1 level "2": 1 NA NA
$ X.1. : Factor w/ 1 level "1": 1 NA NA
$ X.1..1: Factor w/ 1 level "1": 1 NA NA
$ X.foo.: Factor w/ 1 level "foo": 1 1 1
它也会产生错误:
Warning messages:
1: In `[<-.factor`(`*tmp*`, ri, value = "4") :
invalid factor level, NA generated
2: In `[<-.factor`(`*tmp*`, ri, value = "4") :
invalid factor level, NA generated
3: In `[<-.factor`(`*tmp*`, ri, value = "2") :
invalid factor level, NA generated
4: In `[<-.factor`(`*tmp*`, ri, value = "6") :
invalid factor level, NA generated
5: In `[<-.factor`(`*tmp*`, ri, value = "9") :
invalid factor level, NA generated
6: In `[<-.factor`(`*tmp*`, ri, value = "3") :
invalid factor level, NA generated
我该如何解决这个问题?
【问题讨论】: