我想修改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条经验 获得超3个赞
[]
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 关注
- 401 浏览
添加回答
举报
0/150
提交
取消