如果有人能够解释为什么在下面的示例中,第一个dt
没有打印到屏幕上,而第二个{...}}会这样做,我将不胜感激。
df <- data.frame(V1=c(1,2),V2=c(11,12))
dt <- data.table(V3=c(4,5),V4=c(44,45))
change <- function(dt,df) {
dt[, V4 := NULL]
df <- df[,-2]
}
change(dt,df)
dt # First dt, nothing printed
dt # Second dt, contents printed as expected
V3
1: 4
2: 5
如果我交换change()
中命令的顺序,那么
change <- function(dt,df) {
df <- df[,-2]
dt[, V4 := NULL]
}
或者我删除df
行以便
change <- function(dt,df) {
dt[, V4 := NULL]
}
当第一个dt
将其内容打印到屏幕时,意外行为消失。
我正在使用R版本3.3.2(2016-10-31)和data.table版本 1.9.6。