我想我rbind.fill
正在plyr
为cbind
. 我看了看,没有cbind.fill
。
我想要做的是以下内容:
#set these just for this example
one_option <- TRUE
diff_option <- TRUE
return_df <- data.frame()
if (one_option) {
#do a bunch of calculations, produce a data.frame, for simplicity the following small_df
small_df <- data.frame(a=1, b=2)
return_df <- cbind(return_df,small_df)
}
if (diff_option) {
#do a bunch of calculations, produce a data.frame, for simplicity the following small2_df
small2_df <- data.frame(l="hi there", m=44)
return_df <- cbind(return_df,small2_df)
}
return_df
可以理解,这会产生一个错误:
Error in data.frame(..., check.names = FALSE) :
arguments imply differing number of rows: 0, 1
我目前的解决方法是替换该行return_df <- data.frame()
,return_df <- data.frame(dummy=1)
然后代码就可以工作了。然后我只是从最后删除假人return_df
。添加虚拟对象并运行上面的代码后,我得到了
dummy a b l m
1 1 1 2 hi there 44
然后我只需要摆脱假人,例如:
> return_df[,2:ncol(return_df)]
a b l m
1 1 2 hi there 44
我确定我错过了一种更简单的方法来做到这一点。
编辑:我想我不是在寻找 cbind.fill,因为这意味着将在 cbind 之后创建一个 NA 值,这不是我想要的。