R语言使用rbind连接时发出警告

时间:2015-01-27 01:54:41

标签: r concatenation rbind

在R中,我在四个文件的每个文件中连接4个具有相同变量名的数据文件:

ps <- rbind(ps1, ps2, ps3, ps4)

使用read.xls()函数,4个文件中的每个文件都有无错误读取的数据。但是,在rbind()命令之后,我收到以下警告消息,并且rbind()生成的文件中的某些数据不正确(通过设置为缺失),即使数据在4中是正确的个人数据文件。

Warning messages:
1: In `[<-.factor`(`*tmp*`, ri, value = c(NA, NA, NA, NA, NA, NA, NA,  :
  invalid factor level, NA generated
2: In `[<-.factor`(`*tmp*`, ri, value = c(343L, 343L, NA, 343L, NA,  :
  invalid factor level, NA generated
3: In `[<-.factor`(`*tmp*`, ri, value = c(54L, 54L, 54L, 54L, 55L,  :
  invalid factor level, NA generated
4: In `[<-.factor`(`*tmp*`, ri, value = c(NA, NA, NA, NA, NA, NA, NA,  :
  invalid factor level, NA generated

我不知道这些消息是什么意思或如何解决我的问题。非常感谢您的帮助。谢谢。

2 个答案:

答案 0 :(得分:2)

可能最简单的解决方法是,在阅读XLS个文件时,您可以设置stringsAsFactors=FALSE

发生的事情是某些列已转换为factor,但每个文件都有自己的factor,并且无法自动合并。

如需进一步阅读:Loading Data From a FileFactors in R

答案 1 :(得分:0)

在你的rbinding之前试试这个:

pstmp <- lapply( list (ps1, ps2, ps3, ps4), 
                  function(df) as.data.frame( 
                        lapply(df, if (is.factor(cl)){ as.character(cl)
                                       } else {cl} ) ) )

然后:

ps <- do.call(rbind, pstmp) 

(穿过我的手指,我得到了parens和braces正确。)或者做OldPro建议的。也可以使用options()关闭自动因子构造。