我的这个功能有问题。 它为我提供了我想要的修改数据表,但也改变了原始数据表。
我想要的是两个不同的数据表。输入应该保持不变,修改后的输入应该给我这个例子给我的东西。
if (!require('data.table')) {
install.packages('data.table')
}
DT <- data.table(x=rnorm(10, 0, 3), y=rnorm(10, 2, 2))
func <- function(input) {
data <- input
data[x >= abs(1.5), c('trigger') := list(y)]
data[y >= 3.5, c('trigger2') := list(x)]
return (data)
}
DT_modif <- func(DT)
我不知道为什么会出现这种副作用。
答案 0 :(得分:4)
data.table
的要点是所有内容都是通过引用传递的。这包括制作数据表的副本;在您的代码中,data
和input
都是对相同基础表的引用。
如果您想要一个新的独立数据表,请使用copy
。
data <- copy(input)