【问题标题】:Replace multiple columns in data.table using a vector使用向量替换 data.table 中的多列
【发布时间】:2021-06-20 19:07:03
【问题描述】:

我想知道如何在 data.table 中同时替换多个列中的值。

类似于以下内容:

fake_DT <- data.table(iter = 1:5, A = 0, B = 0, C =0)
vec = c(1,2,3)
fake_DT[iter == 1, c("A", "B", "C") := vec]

谢谢!

【问题讨论】:

    标签: r dplyr data.table


    【解决方案1】:

    我们可以将vector 转换为listas.list,因为data.frame/data.table/tibble 等都是list,以列作为元素并具有一些附加属性

    fake_DT[iter == 1, c("A", "B", "C") := as.list(vec)]
    

    -输出

    fake_DT
       iter A B C
    1:    1 1 2 3
    2:    2 0 0 0
    3:    3 0 0 0
    4:    4 0 0 0
    5:    5 0 0 0
    

    data.table语法`中,当我们使用

    dt[, c('col1', 'col2' ) := .(5, 3)]`
    

    .( 是一种指定 list(5, 3) 的简洁方式

    【讨论】:

    • 完美!不敢相信我没有尝试过这个。谢谢!等待期结束后我会接受这个答案。
    猜你喜欢
    • 2013-05-04
    • 2016-08-26
    • 2021-12-19
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 2020-01-08
    • 1970-01-01
    相关资源
    最近更新 更多