我想修改data.table在一個(gè)功能范圍內(nèi)。如果我使用:=函數(shù)中的特性,結(jié)果僅用于第二次調(diào)用。請(qǐng)看下面的插圖:library(data.table)mydt <- data.table(x = 1:3, y = 5:7)myfunction <- function(dt) { dt[, z := y - x] dt}當(dāng)我只調(diào)用函數(shù)時(shí),表就不會(huì)打印(這是標(biāo)準(zhǔn)行為)。但是,如果我保存返回的data.table在一個(gè)新的對(duì)象中,它不是在第一個(gè)調(diào)用時(shí)打印出來(lái)的,而是為第二個(gè)調(diào)用而打印的。myfunction(mydt) # nothing is printed result <- myfunction(mydt) result # nothing is printedresult # for the second time, the result is printedmydt # x y z# 1: 1 5 4# 2: 2 6 4# 3: 3 7 4 你能解釋一下為什么會(huì)發(fā)生這種情況嗎?如何防止?
2 回答

Helenr
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
[]
dt
dt
[]
dt
[]
[]
dt
dt
mydt <- data.table(x = 1:3, y = 5:7)myfunction <- function(dt) { df <- 1 dt[, z := y - x]}myfunction(mydt) # Nothing printed as expectedmydt # Content printed as desired## x y z## 1: 1 5 4## 2: 2 6 4## 3: 3 7 4
[]
dt
mydt <- data.table(x = 1:3, y = 5:7)myfunction <- function(dt) { df <- 1 dt[, z := y - x][]}myfunction(mydt) # Content printed unexpectedly## x y z## 1: 1 5 4## 2: 2 6 4## 3: 3 7 4mydt # Content printed as desired## x y z## 1: 1 5 4## 2: 2 6 4## 3: 3 7 4
df <- 1
[]
mydt <- data.table(x = 1:3, y = 5:7)myfunction <- function(dt) { dt[, z := y - x] df <- 1}myfunction(mydt) # Nothing printed as expectedmydt # Nothing printed unexpectedly
df <- 1
[]
mydt <- data.table(x = 1:3, y = 5:7)myfunction <- function(dt) { dt[, z := y - x][] df <- 1}myfunction(mydt) # Nothing printed as expectedmydt # Content printed as desired## x y z## 1: 1 5 4## 2: 2 6 4## 3: 3 7 4
- 2 回答
- 0 關(guān)注
- 423 瀏覽
添加回答
舉報(bào)
0/150
提交
取消