dplyr::do
似乎不适用于 data.table
:
# this works
data.frame(1) %>%
do(data.frame(1))
## X1
## 1 1
# same for a data.table does not work
data.table(1) %>%
do(data.frame(1))
## Error in do_.data.table(.data, .dots = lazyeval::lazy_dots(...)) :
## argument ".f" is missing, with no default
一些调查导致函数 do
和 do_.data.table
:
do
## function (.data, ...)
## {
## do_(.data, .dots = lazyeval::lazy_dots(...))
## }
## <environment: namespace:dplyr>
dplyr:::do_.data.table
## function (.data, .f, ...)
## {
## list(.f(as.data.frame(.data), ...))
## }
## <environment: namespace:dplyr>
这是如何运作的?很明显, do_.data.table
的论据与 do
的论据不相容 . 并且 do_.data.table
的结果是列表而不是 data.frame
. 如何使用 do
或 do_
与 data.table
输入?
我知道我可以使用 df %>% data.frame %>% do(...)
,但我希望能直接解决 .
2 回答
错误在于它没有为
.f
提供任何可以使用的东西 . 如果你输入一个函数,它的工作原理是:回报
看起来
do_
将使用您的参数执行.f
并将其返回到列表中 .虽然不知道
do
.