这里是一段代码示例:
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
),则可以按预期工作:
However, using do.call
to invoke bind_rows
(test2
) works as expected:
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))