【问题标题】:data.table, apply function to portion of a tabledata.table,将函数应用于表的一部分
【发布时间】:2021-03-26 03:34:05
【问题描述】:

我想将函数应用于表格的一部分。

有了data.frame,没问题:

df <- data.frame(name = paste("a", 1:10, sep = "-"),
                 x = 1:10,
                 y = rep(1:5),
                 z = rep(1:2, each = 5))

df[2:5, -1] <- scale(df[2:5, -1], center = c(1,2,3), scale = c(4,5,6))

但是 data.table 抱怨:

dt <- data.table(name = paste("a", 1:10, sep = "-"),
                 x = 1:10,
                 y = rep(1:5),
                 z = rep(1:2, each = 5))


dt[2:5, -1] <- scale(dt[2:5, -1], center = c(1,2,3), scale = c(4,5,6))

[&lt;-.data.table(*tmp*, 2:5, -1, value = c(0.25, 0.5, 0.75, : j 中列号的第 1 项为 -1,超出范围 [1,ncol=4]。使用列名 而是在 j 中添加新列。

data.table 中的正确方法是什么?谢谢!

【问题讨论】:

    标签: r data.table


    【解决方案1】:

    data.table 需要更多工作才能申请scale

    library(data.table)
    
    cols <- names(dt)[-1]
    dt[, (cols) := lapply(.SD, as.numeric), .SDcols = cols]
    dt[2:5, (cols) := Map(scale, .SD, c(1,2,3), c(4,5,6)), .SDcols = cols]
    

    【讨论】:

    • 谢谢!我不知道这个“(cols)”的用法。
    猜你喜欢
    • 2013-03-18
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多