r
  • data.table
  • 2016-11-21 110 views 3 likes 
    3

    考慮下面的代碼:如何在`:=`下的data.table中分配動態列名?

    library(data.table) 
    carsDT <- data.table(cars) 
    carsDT[speed < 15, `:=`(paste0("col", 1)=1 paste0("col", 2)=2)] 
    

    此代碼提供了錯誤:

    Error: unexpected '=' in "carsDT[speed < 15, `:=`(paste0("col", 1)=" 
    

    有沒有什麼辦法,這裏面:=,我可以使用動態列名?我知道我可以這樣做:

    carsDT[speed < 15, (paste0("col", 1)) := 1] 
    carsDT[speed < 15, (paste0("col", 2)) := 2] 
    

    此解決方案將涉及許多行代碼(要分配的列數在100s)。如果我可以在單一的:=下完成所有的作業,那將很方便。

    任何幫助表示讚賞。

    回答

    4

    我們可以將這些值在list或使用.(...),然後分配(:=)到新的列

    carsDT[speed < 15, paste0("col", 1:2) := list(1, 2)] 
    
    相關問題