我想修改data.table在一個功能范圍內。如果我使用:=函數中的特性,結果僅用于第二次調用。請看下面的插圖:library(data.table)mydt <- data.table(x = 1:3, y = 5:7)myfunction <- function(dt) { dt[, z := y - x] dt}當我只調用函數時,表就不會打印(這是標準行為)。但是,如果我保存返回的data.table在一個新的對象中,它不是在第一個調用時打印出來的,而是為第二個調用而打印的。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 你能解釋一下為什么會發生這種情況嗎?如何防止?
2 回答

Helenr
TA貢獻1780條經驗 獲得超4個贊
[]
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 關注
- 425 瀏覽
添加回答
舉報
0/150
提交
取消