我使用 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和我变成了字符:
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 时,我(显然)收到不同的错误消息(已将警告设置为 2):
Error in `[<-.factor`(`*tmp*`, iseq, value = "ABCD") :
(converted from warning) invalid factor level, NAs generated
我理解,但我也不知道如何克服。
我究竟做错了什么?如何确保保留 I 和 SD 列的数字类型?非常感谢你的帮助。
干杯
乙