我想修改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[]
[]dtdt
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 4df <- 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 unexpectedlydf <- 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
提交
取消
