3

拜托,我无法解决下一个问题:

 str(state_table)

chr [1:54] "AK" "AL" "AR" "AZ" "CA" "CO" "CT" "DC" "DE" "FL" ...

 z <- data.frame(stringsAsFactors=FALSE)

 for (i in state_table){z <- rbind(z, c(i))}

此代码返回:

 invalid factor level, NA generated

 In `[<-.factor`(`*tmp*`, ri, value = "AL") :
4

1 回答 1

3
> rbind(z, "AL")
  X.AL.
1    AL
> str(z)
'data.frame':   0 obs. of  0 variables
> str(rbind(z, "AL"))
'data.frame':   1 obs. of  1 variable:
 $ X.AL.: Factor w/ 1 level "AL": 1

因此,在添加第一项之后,第一列是一个级别的因子,您将无法再进行 rbind 绑定,因为输入将不在级别集中。如果您将 stringsAsFactors 设置为 FALSE options(或者如果您更小心地将数据帧设置为具有字符列而不是使用默认值,它应该可以工作。

> options(stringsAsFactors=FALSE)
> z <- data.frame()
> str(rbind(z, "AL"))
'data.frame':   1 obs. of  1 variable:
 $ X.AL.: chr "AL"

> for (i in state.abb){z <- rbind(z, c(i))}
> str(z)
'data.frame':   50 obs. of  1 variable:
 $ X.AL.: chr  "AL" "AK" "AZ" "AR" ...
于 2013-10-19T14:07:20.490 回答