R をしばらく使用していますが、因子とデータ フレームにまだ苦労しています。これが私の質問です。
次のように、異なるタイプの複数の列で構成されるデータ フレームを事前に割り当てようとしています。
cb <- data.frame(S=character(1000), I=numeric(1000), A=as.Date(rep(0,1000), origin = "1900-01-01"), SD=as.POSIXct(rep(0,1000), origin = "1900-01-01 00:00:00"), CC=numeric(1000), stringsAsFactors=FALSE)
これは、必要なデータ フレーム タイプを満たします (str(cb) の出力):
'data.frame': 1000 obs. of 5 variables:
$ S : chr "" "" "" "" ...
$ I : num 0 0 0 0 0 0 0 0 0 0 ...
$ A : Date, format: "1900-01-01" "1900-01-01" "1900-01-01" "1900-01-01" ...
$ SD: POSIXct, format: "1900-01-01" "1900-01-01" "1900-01-01" "1900-01-01" ...
$ CC: num 0 0 0 0 0 0 0 0 0 0 ...
データ フレームの最初のアイテムを割り当てると、CC と I が文字になります。
cb[1, ] <- c("ABCD", 4, "2005-12-12", "2008-04-03 20:30", 3)
str(cb) の出力:
'data.frame': 1000 obs. of 5 variables:
$ S : chr "ABCD" "" "" "" ...
$ I : chr "4" "0" "0" "0" ...
$ A : Date, format: "2005-12-12" "1900-01-01" "1900-01-01" "1900-01-01" ...
$ SD: POSIXct, format: "2008-04-03 20:30:00" "1900-01-01 00:00:00" "1900-01-01 00:00:00" "1900-01-01 00:00:00" ...
$ CC: chr "3" "0" "0" "0" ...
これにより、私の目的にはかなり使用できなくなります。
data.frame 定義で stringsAsFactors=FALSE を省略すると、(明らかに) 別のエラー メッセージが表示されます (warn を 2 に設定):
Error in `[<-.factor`(`*tmp*`, iseq, value = "ABCD") :
(converted from warning) invalid factor level, NAs generated
私は理解していますが、克服する方法もわかりません。
私は何を間違っていますか?I 列と SD 列の数値型を確実に保持するにはどうすればよいですか? どうもありがとうございました。
乾杯
B