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

したがって、最初の項目が追加された後、最初の列は 1 つのレベルを持つ因子であり、入力が一連のレベルに含まれないため、rbind を実行できなくなります。これは、stringAsFactors を 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 に答える