问题 如何从data.table中的`.BY`中受益?


这是手册中的解释 .BY

.BY 是一个列表,包含每个项目的长度为1的向量 by。这在以下情况下非常有用 by 事先不知道。该 by 变量也可用 j 直接按名称;例如,对于图表标题有用 j 是一个情节命令,或用于分支 if() 取决于组变量的值。

它说“对图表的标题有用,如果 j 是一个情节命令,或用于分支 if() 取决于组变量的值。“

但是,我仍然不确定何时使用。如何从中受益 .BY

你举个例子吗?非常感谢!


12773
2018-03-19 15:51


起源

这是一个SO /现实生活中的例子: stackoverflow.com/a/22694260/817778 - eddi


答案:


这是一个简单的例子。我们正在使用 .BY 变量以显示该图所属的组。请注意,您也可以不使用它 .BY,用它代替 gear[1],这将是等价的。

library(data.table)
mtcars_dt = data.table(mtcars)
mtcars_dt[,
  plot(wt, mpg, main = paste('Gears: ', .BY)),
  gear
]

9
2018-03-19 16:26



注意 gear 在那个设置中已经是长度为1,所以你不需要 gear[1],只是 gear 会做 - eddi
你是对的。我以为 gear 将在子集化数据框中,但显然不是。 - Ramnath
将它保持为向量是低效的,因为它是相同的值,R将根据需要回收标量 - eddi
谢谢@Ramnath!这个真的很酷! - Bigchao
@Ramnath,你能给出一个例子 branch with if() depending on the value of a group variable.?非常感谢! - Bigchao