機略戦記

Maneuver warfare

R で data.tableに変数で指定した名前の列を追加したい

結論

  • eval以外のいい方法が見つからなかった。
sample_data_table <- data.table(V1=1, V2=2)
new_column_name <- 'new_column'

expr <- parse(text = paste(new_column_name, ":= V1+V2"))
sample_data_table[, eval(expr)]

## Checking the result
print(sample_data_table)
#    V1 V2 new_column
# 1:  1  2          3

説明

  • new_column_nameで指定したカラム名のカラムを追加している。
  • 内容は、V1+V2
  • 静的に書いた場合こういうコードになる。
    • sample_data_table[, new_column := V1+V2]
    • new_columnの部分を変数で指定するためにevalしている。