gpt4 book ai didi

r - 在 R 中使用 data.table 制作函数

转载 作者:行者123 更新时间:2023-12-01 13:20:37 25 4
gpt4 key购买 nike

我正在学习使用库编写函数 data.table .经过实验,我使用了get()将变量转换为对象。
想知道是否有更多的实现方式?

library(data.table)

DT <- data.table(
V1=rep(letters[1:3],5),
V2=c(2:16)
)

Test1 <- DT[,.((V2-sd(V2))/(max(V2)-min(V2))), by=.(V1)] # for comparision

Norma <- function(dataset, Vari, group_by){
dataset[,
.((get(Vari)-sd(get(Vari)))/(max(get(Vari))-min(get(Vari)))),
by=.(get(group_by))
]
}


Test2 <- Norma(DT,"V2","V1")

它有效,Test1 与 Test2 相同。

最佳答案

而不是 get ,我们可以在.SDcols中指定需要应用该函数的感兴趣的列然后遍历列。在这里,它只有一列,因此我们使用 [[ 将该列提取为向量

Norma <- function(dataset, Vari, group_by){
dataset[,
.((.SD[[1]]-sd(.SD[[1]]))/(max(.SD[[1]])-min(.SD[[1]]))),
by= group_by, .SDcols = Vari
]
}

identical(Norma(DT, "V2", "V1"), Test1)
#[1] TRUE

关于r - 在 R 中使用 data.table 制作函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50082887/

25 4 0