我正在学习R语言,但我不确定是将重点放在dplyr还是data.table上。Dplyr有非常好的语法,但据我了解,它在每次操作时都会复制数据框,这可能是一个缺点。
有一件事我无法弄清楚,那就是mutate的替代方法。
如果我有
df %>% group_by(foo) %>% mutate(
bar = cumsum(baz),
q = bar * 3.14)
我可以做类似于某事的事情。
df[,c("bar"):=list(cumsum(baz)),by=foo]
df$q <- df$bar*3.14
在data.table中有没有更好的方法来做这件事?
c
或list
。你的第二行有点突然回到了基本的 R 语法。为什么你突然又在使用<-
和$
?为什么不像你的第一行那样做一些类似于df[,q:=bar*3.14]
的事情呢? - David Arenburg<-
和$
会进行复制。如果你在数据表范围内使用:=
,你就可以避免复制。这就是:=
的全部意义 - 它通过引用进行更新。 - David Arenburgdata.table
函数(如:=
、setnames
等)之外的几乎所有操作都会生成副本。 - Max Ghenis