虽然不在下面rlang
类型的咒语,这种方法似乎效果很好:lapply(dt_list, '[', ...)
该代码对我来说更具可读性,因为它明确说明了正在使用的方法。如果我看到car_list[, .N, by = speed]
我希望默认data.table
方法。
将其作为一个函数可以让您两全其美:
class(car_list) <- "dd"
`[.dd` <- function(x,...) {
lapply(x, '[', ...)
}
car_list[, .N, speed]
car_list[, speed * 2]
car_list[, .(.N, max(dist)), speed]
car_list[, `:=` (more_speed = speed+5)]
以下是该方法的一些示例:
car_list[, .N, speed]
# lapply(car_list, '[', j = .N, by = speed)
# or
# lapply(car_list, '[', , .N, speed)
[[1]]
speed N
1: 4 2
2: 7 2
3: 8 1
4: 9 1
5: 10 3
...
[[2]]
speed N
1: 4 2
2: 7 2
3: 8 1
4: 9 1
5: 10 3
...
car_list[, speed * 2]
# lapply(car_list, '[', j = speed*2)
# or
# lapply(car_list, '[', , speed*2)
[[1]]
[1] 8 8 14 14 16 18 20 20 20 22 22 24 24 24 24 26 26
[18] 26 26 28 28 28 28 30 30 30 32 32 34 34 34 36 36 36
[35] 36 38 38 38 40 40 40 40 40 44 46 48 48 48 48 50
[[2]]
[1] 8 8 14 14 16 18 20 20 20 22 22 24 24 24 24 26 26
[18] 26 26 28 28 28 28 30 30 30 32 32 34 34 34 36 36 36
[35] 36 38 38 38 40 40 40 40 40 44 46 48 48 48 48 50
car_list[, .(.N, max(dist)), speed]
# lapply(car_list, '[', j = list(.N, max(dist)), by = speed)
# or
# lapply(car_list, '[', ,.(.N, max(dist)), speed)
[[1]]
speed N V2
1: 4 2 10
2: 7 2 22
3: 8 1 16
4: 9 1 10
5: 10 3 34
...
[[2]]
speed N V2
1: 4 2 10
2: 7 2 22
3: 8 1 16
4: 9 1 10
5: 10 3 34
...
这适用于:=
操作员:
car_list[, `:=` (more_speed = speed+5)]
# or
# lapply(car_list, '[', , `:=` (more_speed = speed+5))
car_list
[[1]]
speed dist more_speed
1: 4 2 9
2: 4 10 9
3: 7 4 12
4: 7 22 12
5: 8 16 13
...
[[2]]
speed dist more_speed
1: 4 2 9
2: 4 10 9
3: 7 4 12
4: 7 22 12
5: 8 16 13