gpt4 book ai didi

r - 通过列索引而不是名称将函数应用于 data.table 列的子集

转载 作者:行者123 更新时间:2023-12-02 04:54:09 27 4
gpt4 key购买 nike

我正在尝试将函数应用于大型 data.table 中的一组列,而不是单独引用每一列。

a <- data.table(
a=as.character(rnorm(5)),
b=as.character(rnorm(5)),
c=as.character(rnorm(5)),
d=as.character(rnorm(5))
)
b <- c('a','b','c','d')

对于上面的 MWE,这个:

a[,b=as.numeric(b),with=F]

有效,但是这个:

a[,b[2:3]:=data.table(as.numeric(b[2:3])),with=F]

没用。将 as.numeric 函数应用于 a 的第 2 列和第 3 列而不单独引用它们的正确方法是什么。

(实际数据集中有几十列,不切实际)

最佳答案

惯用的方法是使用 .SD.SDcols

您可以通过包装在 ()

中强制在父框架​​中评估 RHS
a[, (b) := lapply(.SD, as.numeric), .SDcols = b]

对于第 2:3 列

a[, 2:3 := lapply(.SD, as.numeric), .SDcols = 2:3]

mysubset <- 2:3
a[, (mysubset) := lapply(.SD, as.numeric), .SDcols = mysubset]

关于r - 通过列索引而不是名称将函数应用于 data.table 列的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24637303/

27 4 0