【发布时间】:2018-09-13 11:41:02
【问题描述】:
来自?data.table::data.table:
表达式 '.()' 是 list() 的简写别名;他们都意味着 一样的
然而这个功能却无处可寻:
data.table:::.
get(name, envir = asNamespace(pkg), inherits = FALSE) 中的错误:
目的 '。'没找到
所以我想输入以某种方式解析,它是如何完成的?我想在自己的包中使用相同的功能。
以下作品还不错:
test <- function(x) {
eval(substitute(
eval.parent(substitute(x, list(.=list)))
))
}
foo <- "bar"
test(.(foo))
# [[1]]
# [1] "bar"
identical(test(.(foo)), list(foo))
# [1] TRUE
但是在这个点函数内部会使用一些点变量,这会失败:
. <- "baz"
test(.(foo,.))
# [[1]]
# [1] "bar"
#
# [[2]]
# function (...) .Primitive("list")
预期:
# [[1]]
# [1] "bar"
#
# [[2]]
# [1] "baz"
【问题讨论】:
标签: r function data.table