我知道在R中,如果变量没有在函数内定义,则会向上游搜索。所以我认为特殊的data.table
变量,如.SD
、.N
等,也应该是这样。但是这段代码无法正常工作:
data(iris)
setDT(iris)
myFunA <- function(){
return(nrow(.SD))
}
iris[,myFunA(),by=Species]
有没有一种方法可以在函数内部访问.SD
,而不像myFunA(.SD)
一样将其作为参数传递?(是的,我知道这通常不是一个好习惯,但对于这种用例,我会纵容它)
.SD
是“此组数据”的缩写。因此,您应编写一个以“某些数据”作为输入的函数,而不是使其基本上依赖于全局变量。 - MichaelChiricoby=
组进行调用。这只是一个美学问题:例如,我想看到myDT[,myFunction(),by=grpCol]
而不是myDT[,myFunction(.SD, .GRP),by=grpCol]
。虽然我不得不回到后者的形式,但这并不是什么大问题,我只是好奇为什么那些变量无法访问的机制。 - Vasily A