【发布时间】:2014-04-01 17:37:47
【问题描述】:
当使用两个 data.frames 和 NA 值的 rbind 时,R 强制变量类型的方式存在问题。我举例说明:
x<-factor(sample(1:3,10,T))
y<-rnorm(10)
dat<-data.frame(x,y)
NAs<-data.frame(matrix(NA,ncol=ncol(dat),nrow=nrow(dat)))
colnames(NAs)<-colnames(dat)
现在的目标是追加dat 和NAs,同时保留x 和y 的变量类型factor 和numeric。当我给:
dat_forward<-rbind(dat,NAs)
is.factor(dat_forward$x)
这很好用。但是使用rbind 的反向失败:
dat_backward<-rbind(NAs,dat)
is.factor(dat_backward$x)
is.character(dat_backward$x)
现在x 被强制转换为字符级别。我很困惑 - 即使我使用其他绑定顺序,它不能保持因子类型吗?对我的代码进行哪些直接更改以实现我的目标?
【问题讨论】:
-
来自
?rbind.data.frame:“然后它从第一个数据帧中获取列的类......”。这就是为什么您在致电rbind时看到订单很重要。 -
@josilber 谢谢,我的问题有直接的解决方法吗?
-
将
NAs的第一列转换为因子? -
@josilber
rbind(dat[0,], NAs, dat)似乎与此相矛盾。 -
@MatthewPlourde 文档前面的一句话:“rbind 数据框方法首先丢弃所有零列和零行参数。”
标签: r dataframe na rbind r-factor