R代碼裏面如何編寫一個R函數來確保我們得到一個變量但不是col的data.table?
library(data.table)
x <- 4
f1 <- function(){
x <- 1
dt <- data.table(x=1:4,y=1:12)
dt[x==get("x", envir=parent.env(environment()))]
}
f1()
我得到這個:
x y
1: 1 1
2: 1 5
3: 1 9
f2是一個新的功能,在功能刪除x <- 1
。
f2 <- function(){
#x <- 1
dt <- data.table(x=1:4,y=1:12)
dt[x==get("x", envir=parent.env(environment()))]
}
f2()
我得到這個:
x y
1: 4 4
2: 4 8
3: 4 12
這是正確的,我的問題是如何編寫一個函數來代替get("x", envir=parent.env(environment()))
?
謝謝!
我以爲'..x'語法不是一個好主意,因爲'..x'可以是一個合法變量。我們可能無法理解「...... a」或「... a」的含義。 – liqg3
@ liqg3是的,這是一個很好的觀點。如果/當'inherits = TRUE'是一個選項,那麼唯一的要求就是'..x'不是一個列名(所以它會搜索「上一層」爲'x'),我想。你的編輯到你的問題應該/可以作爲一個答案在這裏發佈。 – Frank
感謝您的回答,這是我第一次看到data.table的輔助鍵,這對於大數據操作非常有幫助。 – liqg3