是否可以在data.table
中的分组命令中每组返回多行?在dplyr
中,这是通过reframe
完成的:
y <- c("a", "b", "d", "f")
df <- tibble(
g = c(1, 1, 1, 2, 2, 2, 2),
x = c("e", "a", "b", "e", "f", "c", "a")
)
library(dplyr)
df %>%
reframe(x = setdiff(x, y), .by = g)
# g x
# 1 e
# 2 e
# 2 c
在data.table
中,这将返回一个错误:
library(data.table)
dt <- setDT(df)
dt[, x := setdiff(x, y), g]
[.data.table
(df,,:=
(x,intersect(x,y)),g)中的错误:
提供了2个项目,将其分配给“x”列中尺寸为3的组1。RHS长度必须为1(可以使用单个值)或与LHS长度完全匹配。如果您希望“回收”RHS,请显式地使用rep(),以使代码的读者清楚地了解此意图。
无论如何,要获得data.table
的reframe
等价物?
1条答案
按热度按时间ego6inou1#
Package 在
.(...)
中,并使用=
代替:=
(因为它在.(..)
内)。请注意,
.(.)
实际上只是list(.)
,因此我们也可以使用任何返回类似list
的对象,包括: