【发布时间】:2015-04-11 22:10:38
【问题描述】:
我正在学习 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]的事情? -
使用一种或另一种语法(个人喜好除外)有区别吗?我的意思是,在第一行中,由于“...,by=foo]”,我需要该语法。
-
您提到自己不想复制数据。所以
<-和$进行复制。如果您在数据表范围内使用:=,您将避免复制。这就是:=的全部意义所在 - 它通过引用进行更新。 -
标签: r data.table