R 具有混合数据类型的数据帧

R 具有混合数据类型的数据帧,r,type-conversion,dataframe,R,Type Conversion,Dataframe,我已经使用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), s

我已经使用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)
当我指定数据框中的第一个项目时,CC和I变成字符:

cb[1, ] <- c("ABCD", 4, "2005-12-12", "2008-04-03 20:30", 3)
这就使得它对我来说很难使用了

当我在data.frame定义中省略stringsAsFactors=FALSE时,我(显然)会收到不同的错误消息(已将warn设置为2):


“[中的
错误您不能在向量中混合类型,因此您的向量被强制为字符

R> c("ABCD", 4, "2005-12-12", "2008-04-03 20:30", 3)
[1] "ABCD"             "4"               
[3] "2005-12-12"       "2008-04-03 20:30"
[5] "3"
[
'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" ...
Error in `[<-.factor`(`*tmp*`, iseq, value = "ABCD") : 
  (converted from warning) invalid factor level, NAs generated
R> c("ABCD", 4, "2005-12-12", "2008-04-03 20:30", 3)
[1] "ABCD"             "4"               
[3] "2005-12-12"       "2008-04-03 20:30"
[5] "3"
cb[1, ] <- list("ABCD", 4, "2005-12-12", "2008-04-03 20:30", 3)
cb[1, ] <- data.frame("ABCD", 4, "2005-12-12", "2008-04-03 20:30", 3,
                      stringsAsFactors=FALSE)