R语言 是否在函数中动态更改data.table列值?

e0bqpujr  于 2022-12-06  发布在  其他
关注(0)|答案(2)|浏览(162)

如何在函数中更改data.table列中的值?

DF = data.table(ID = c("b","b","b","a","a","c"), a = 1:6, b = 7:12, c = 13:18)

change_it <- function(data_table) {
    data_table[[column]] <- 73
}

column = 'a'

change_it(DF, column) # Nothing happens because data_table is not a reference (or something)

DF[[column]] <- 73 # The change happens
vltsax25

vltsax251#

它与:=运算符一起使用,如下所示:

DF = data.table(ID = c("b","b","b","a","a","c"), a = 1:6, b = 7:12, c = 13:18)

change_it <- function(data_table) {
    data_table[, c('a') := 73]
}

change_it(DF) # The change occured

这将就地更改值。

gg58donl

gg58donl2#

解决问题的一种方法:

change_it <- function(data_table) {
  set(data_table, j="a", value=73)
}

# apply the change
change_it(DF)

相关问题