Невозможно выполнить итерацию dplyr :: bind_cols из пустого тиббла - PullRequest
0 голосов
/ 19 июня 2020

Я хочу создать следующий тиббл, начав с пустого tibble

expected = tibble::tibble(z = 1:10, w = 2:11)

Однако следующий код не работает и показывает ошибку.

actual= tibble::tibble()
actual = dplyr::bind_cols(actual, tibble::tibble(z = 1:10))
actual = dplyr::bind_cols(actual, tibble::tibble(w = 2:11))

Error: Can't recycle `..1` (size 0) to match `..2` (size 10).

Версия dplyr - 1.0.0, а tibble - 3.0.1. Этот код не имеет проблем в старой версии dplyr 0.8.3

Спасибо за ваши комментарии. Извините за недостаточное объяснение. Чтобы быть точным, я хочу использовать в итерации только dplyr :: bind_cols.

actual= tibble::tibble()
tibbles = list(tibble::tibble(z = 1:10),
               tibble::tibble(w = 2:11))     
for(i in 1:length(tibbles)){
   actual = dplyr::bind_cols(actual, tibbles[[i]])
}

1 Ответ

1 голос
/ 19 июня 2020

Вы хотите bind_rows() не bind_cols() в первом обновлении:

actual= tibble::tibble()
actual = dplyr::bind_rows(actual, tibble::tibble(z = 1:10))
actual = dplyr::bind_cols(actual, tibble::tibble(w = 2:11))
actual
# A tibble: 10 x 2
       z     w
   <int> <int>
 1     1     2
 2     2     3
 3     3     4
 4     4     5
 5     5     6
 6     6     7
 7     7     8
 8     8     9
 9     9    10
10    10    11
...