【发布时间】:2019-03-01 12:50:15
【问题描述】:
这是一个代码sn-p:
y <- purrr::map(1:2, ~ c(a=.x))
test1 <- dplyr::bind_rows(y)
test2 <- do.call(dplyr::bind_rows, y)
第一次调用bind_rows (test1) 会产生错误
Error in bind_rows_(x, .id) : Argument 1 must have names
另一方面,使用do.call 调用bind_rows (test2) 可以正常工作:
test2
# A tibble: 2 x 1
a
<int>
1 1
2 2
为什么?这是使用 dplyr 0.7.6 和 purrr 0.2.5。如果我使用map_df 而不是map,则会失败并出现同样的错误。
注意:在我看来,这个问题与Error in bind_rows_(x, .id) : Argument 1 must have names using map_df in purrr 不同。
编辑:解决此问题的另一种方法是首先显式创建数据框:
y <- purrr::map(1:2, ~ data.frame(a=.x))
test1 和 test2 现在创建时没有错误并且完全相同。
或者,这一步创建test2数据框:
purrr::map_df(1:2, ~ data.frame(a=.x))
【问题讨论】: