R 环境如何在data.table中工作?
在data.table中,我希望使用by=进行子集划分,然后访问包含适当列向量的环境。然而,它看起来并没有正常工作R 环境如何在data.table中工作?,r,data.table,R,Data.table,在data.table中,我希望使用by=进行子集划分,然后访问包含适当列向量的环境。然而,它看起来并没有正常工作 > mtcars mpg cyl disp hp drat wt qsec vs am gear carb 1: 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 2: 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 3: 22.8 4
> mtcars
mpg cyl disp hp drat wt qsec vs am gear carb
1: 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
2: 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
3: 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
4: 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
5: 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
.
.
.
> mtcars <- data.table(mtcars)
> f<-function(e=parent.frame()) {print(ls(e)); 1}
> mtcars[, f(), by=gear]
[1] "Cfastmean" "gear" "mean" "print"
[1] "Cfastmean" "gear" "mean" "print"
[1] "Cfastmean" "gear" "mean" "print"
gear V1
1: 4 1
2: 3 1
3: 5 1
mtcars
mpg气缸显示hp drat wt qsec与am齿轮carb
1: 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
2: 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
3: 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
4: 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
5: 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
.
.
.
>mtcars f mtcars[,f(),by=档位]
[1] “Cfastmean”“齿轮”“表示”“打印”
[1] “Cfastmean”“齿轮”“表示”“打印”
[1] “Cfastmean”“齿轮”“表示”“打印”
齿轮V1
1: 4 1
2: 3 1
3: 5 1
我希望
print(ls(e))
调用将打印mpg、cyl、disp、hp等。。但事实并非如此。这里有错误吗?或者这不是data.table的工作方式?data.table的效率诀窍之一是只将实际使用的列放在环境中,而您只使用了gear
列
与之相比:
mtcars[, {.SD; f()}, by = gear]
# [1] "am" "carb" "Cfastmean" "cyl" "disp" "drat" "gear"
# "hp" "mean" "mpg"
# [11] "print" "qsec" "vs" "wt"
# ...
所有列都在环境中,因为我使用了.SD