我如何理解rbind的警告?

Ste*_*owe 3 r rbind

如果我有两个具有相同列名的data.frames,我可以使用rbind创建一个数据帧.但是,如果我有一个是因素而另一个是int,我会收到如下警告:

警告消息:In [<-.factor(*tmp*,ri,value = c(1L,1L,0L,0L,0L,1L,1L,:无效因子级别,NA生成

以下是问题的简化:

t1 <- structure(list(test = structure(c(1L, 1L, 2L, 1L, 1L, 1L, 1L, 
1L, 1L, 2L), .Label = c("False", "True"), class = "factor")), .Names = "test", row.names = c(NA, 
-10L), class = "data.frame")
t2 <- structure(list(test = c(1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L
)), .Names = "test", row.names = c(NA, -10L), class = "data.frame")
rbind(t1, t2)
Run Code Online (Sandbox Code Playgroud)

使用单列,这很容易理解,但当它是十几个或更多因素的一部分时,它可能很难.有什么警告信息告诉我要查看哪一列?除此之外,了解哪一列错误的好方法是什么?

the*_*ail 6

您可以使用class和编译一个简单的小比较脚本mapply,以比较rbind由于不匹配的数据类型而导致分解的位置,例如:

one <- data.frame(a=1,b=factor(1))
two <- data.frame(b=2,a=2)

common <- intersect(names(one),names(two))
mapply(function(x,y) class(x)==class(y), one[common], two[common])

#    a     b 
# TRUE FALSE 
Run Code Online (Sandbox Code Playgroud)