gpt4 book ai didi

r - 从 data.table 中的 `by` 内访问 `j` 变量

转载 作者:行者123 更新时间:2023-12-03 15:02:41 25 4
gpt4 key购买 nike

如果我有一个 data.table 并且我正在 j 中执行一些函数调用,我是否可以访问 by 变量的当前值?

library(data.table)
d <- data.table(x=1:10, y=c('a', 'b'))

myfun <- function(DT) {
print (DT$y)
}


d[, myfun(.SD), by=y]

有关更多上下文,我将第二个参数(另一个 data.table )传递给 myfun 并希望根据 y 的当前值对其进行子集化。它可以用一个虚拟变量来完成,但这看起来很糟糕......

最佳答案

使用 .BY - 这是 by 变量的列表:

d <- data.table(x=1:10, y=c('a', 'b'))
d[, .BY[[1]], by = y] # [[1]] to access the first by variable, which is y
# if you had by = list(x, y) you'd do .BY[[2]] to access y
# y V1
#1: a a
#2: b b

此外,该列表已命名,因此您还可以按名称访问它:
d[, .BY$y, by = y]

关于r - 从 data.table 中的 `by` 内访问 `j` 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21733151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com