I have been studying a datacamp course called "Data Analysis in R, the data.table Way".
练习的指导如下,
布局如下,
# This is your data.table `DT`. The keys are set to `A` and `B`
DT <- data.table(A=letters[c(2,1,2,3,1,2,3)], B=c(5,4,1,9,8,8,6), C=6:12)
setkey(DT,A,B)
# Select the `b` group
# `b` and `c` groups
# The first row of the `b` and `c` group
# `by=.EACHI` and `.SD`
# Print out all the data in the two groups before you return the first and last row of each group again. Use {} and .N
Run Code Online (Sandbox Code Playgroud)
我确实理解前4个怎么做,但是当我继续执行最后一个指令时,我卡住了.我不明白如何使用{},最终我发现解决方法是:
DT[c("b", "c"), {print(.SD); .SD[c(1, .N)]}, by = .EACHI]
Run Code Online (Sandbox Code Playgroud)
我不明白j中的语法是如何工作的,有人可以向我解释一下吗?谢谢.
正如你从阅读中所知help("data.table"),j期待
单个列名,列名的单个表达式,列名表达式的列表(),计算列表的表达式或函数调用(包括也是列表的data.frame和data.table),或者(当=时) FALSE)要选择的名称或位置的向量.
你也应该阅读help("{").{可以结合表达式.它返回最后一个计算表达式.因此,就data.table而言,它仅被传递到最后一个表达式,即,.SD[c(1, .N)]它知道如何处理它(例如,组合每个组的结果).data.table不需要知道如何处理print(.SD),但是在data.table的框架内进行评估.