我想知道在data.table
包中實現的list
構造函數的點別名(.
)如何。只是要清楚,我想這個功能:如何在data.table包中實現列表構造函數的點(。)別名?
library(data.table)
D = data.table(iris)
x1 = D[, .(Sepal.Length, Sepal.Width)] # dot alias
x2 = D[, list(Sepal.Length, Sepal.Width)] # standard name
identical(x1, x2) # TRUE
我試圖找到它在github上的源代碼,但它過於密集對我來說,在任何時間合理的理解。
編輯。 我知道這可以很容易地通過定義一個別名,如:. <- list
或. <- function(...) list(...)
。但是,這並不是我正在尋找的。我想定義這樣一個別名,所以它只能在給定函數/方法的上下文中工作。
例子。
L <- .(1) # This throws error
L <- func(.(1)) # This works
其實我能得到我想要使用rlang
工具整齊評價什麼。下面是一個簡單的例子。
library(rlang)
func <- function(...) {
. <- list
eval_tidy(enexpr(x))
}
x1 <- func(.(1))
x2 <- list(1)
identical(x1, x2) # TRUE
所以我不知道這樣的功能在data.table
具體實現,因爲它比rlang
開發出一種早?
也許相關:https://stackoverflow.com/questions/41228076/using-data-tables-shortcut-in-quoted-expressions Data.table有一些優化,適用於表達式在'DT [...] 「你可能會失去這種方式,順便說一句。 – Frank