R:无法对数据帧进行多次观察

时间:2018-02-12 21:54:44

标签: r rbind

我已经使用data.table来创建一个空的数据框,但是当我向它添加观察时,所有观察结果都会被强制转换为NA。

首先,我使用“stringsAsFactors = FALSE”参数创建一个空数据框:

cards <- data.frame(Ending = character(), Owner = character(), stringsAsFactors = FALSE)
str(cards)
'data.frame':   0 obs. of  2 variables:
 $ Ending: chr 
 $ Owner : chr 

我得到一个数据框,其中包含0个观察值和两个预期的字符变量。

然后我创建观察1(不是实际代码 - 从另一个data.frame DF中提取)

newcard1 <- as.list(
   c(Ending = as.character(DF[4, "Col1"]), 
      Owner = as.character(DF[4, "Col2"]))
   )
str(newcard1)
List of 2
 $ Ending: chr "1234"
 $ Owner : chr "JOE BIDEN"

和观察2(不是实际代码 - 从另一个data.frame DF中提取)

newcard2 <- as.list(
  c(Ending = as.character(DF[51, "Col1"]), 
    Owner = as.character(DF[51, "Col2"]))
   )
str(newcard2)
List of 2
$ Ending: chr "5678"
$ Owner : chr "JOHN TURTURRO"

两者都是包含两个字符变量的列表,如上所示。

现在如果我绑定第一个观察作品

cards <- rbind(cards, newcard1)
str(cards)
'data.frame':   1 obs. of  2 variables:
  $ Ending: Factor w/ 1 level "1234": 1
  $ Owner : Factor w/ 1 level "JOE BIDEN: 1

rbind操作已将观察结果改为因子。此外,如果我尝试添加任何其他观察,rbind将不接受任何其他值作为有效级别并将值强制转换为NA:

cards <- rbind(cards, newcard2)
Warning messages:
1: In `[<-.factor`(`*tmp*`, ri, value = FALSE) :
   invalid factor level, NA generated
2: In `[<-.factor`(`*tmp*`, ri, value = FALSE) :
   invalid factor level, NA generated
str(cards)
'data.frame':  2 obs. of  2 variables:
  $ Ending: Factor w/ 1 level "1234": 1 NA
  $ Owner : Factor w/ 1 level "JOE BIDEN": 1 NA

cards
   Ending       Owner
 1 1234         JOE BIDEN
 2 <NA>         <NA>

我做错了什么?

0 个答案:

没有答案