【问题标题】:Update more than one column of a data.table更新 data.table 的多个列
【发布时间】:2012-12-18 19:57:58
【问题描述】:

是否可以在同一个语句中更新超过 1 列的 data.table?

类似

dt[,onecol:=1 anothercol:=2]

我看过一些例子

dt[,c("onecol","anothercol"):=1]

但我不知道如何为每一列分配不同的公式

【问题讨论】:

    标签: r data.table


    【解决方案1】:

    是的,从 1.8.4 版本开始就可以做到这一点:

    library(data.table)
    dt <- data.table(a=1:4, b=4:1)
    dt[,c("a", "b") := list(min(a), max(b))]
    # dt
    #    a b
    # 1: 1 4
    # 2: 1 4
    # 3: 1 4
    # 4: 1 4
    

    或者,以更易读的方式做同样的事情:

    dt <- data.table(a=1:4, b=4:1)
    dt[,`:=`(a = min(a),
             b = max(a))]
    dt
    #    a b
    # 1: 1 4
    # 2: 1 4
    # 3: 1 4
    # 4: 1 4
    

    the current data.table NEWS file 中搜索“多个 LHS”,看看这也适用于 by= 参数。

    【讨论】:

    • FWIW,?":=" 帮助页面在描述:= 可以做什么时有点过时了。它的“示例”部分不包含此处显示的语法示例,“参数”部分暗示这仅在 with=FALSE 时有效。
    猜你喜欢
    • 2015-05-04
    • 2016-07-20
    • 2016-10-09
    • 2015-07-28
    • 2019-07-24
    • 2015-04-08
    • 2021-05-14
    • 2021-06-25
    相关资源
    最近更新 更多