我正在努力更好地了解data.table
包中的某些特殊变量是如何工作的。其中之一是.BY
声明。我没有看到很多人使用它的例子,但是文档暗示在绘图中很有用。
例如,以下代码在data.table 1.9.3
中似乎运行良好(显示每个物种的图表并为每个图分配正确的标题):
iris <- data.table(iris)
iris[,plot(Sepal.Length ~ Sepal.Width, main = unlist(.BY)), by = Species]
虽然此代码不符合我的预期:
iris[ , plot(Sepal.Length ~ Sepal.Width, main = .BY), by = Species]
为什么这两个不同?从评论来看,它似乎不是data.table 1.9.2
中的问题。在其他方面使用.BY
语句可能有用吗?与.EACHI
语句相比,这有何不同?
答案 0 :(得分:4)
.BY
是名为 list
,其中包含by
个变量的值。
将未命名的列表传递给main
会有效,但名为的列表将失败(完全与data.table
无关
plot(1, main = list(1))
# works....
plot(1, main = list(s=1))
# Error in title(...) : invalid graphics parameter
最近有一个data.table 1.9.3的提交修复了在.BY中命名的错误 Closes bug #5415. .BY gets names attribute set properly今年4月。
如果你有超过1&#34; by&#34;变量,你希望能够连接一些如何
也许
iris[,plot(Sepal.Length~Sepal.Width,main=do.call(paste,.BY)),by=Species]
将起作用(除非您有一个名为collapse
的列!)
EACHI
与此完全无关。请阅读NEWS for data.table 1.9.3以了解相关信息。