Я думаю, что ищу аналог 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
Я уверен, что яотсутствует более простой способ сделать это.
edit: я думаю, я не ищу cbind.fill, потому что это будет означать, что значение NA будет создано после cbind, а это не то, что мне нужно.