希望有人可以发布一个类似于"."的自定义函数的示例.在普利尔.
我所拥有的是一个数据框.我在哪里持续运行查询,例如:
sqldf("select * from event.df where Date in (select Date from condition.df where C_1 = 1 and (C_2 = 1 OR C_3 = 3)")
Run Code Online (Sandbox Code Playgroud)
我想要的是一个基本上如下的功能:
.(C_1, C_2 + C_3)
Run Code Online (Sandbox Code Playgroud)
具体来说,是一个公式向量,它定义了我用来选择数据的属性.我可以将"+"视为OR"*"作为AND等...
我试着查看"."的返回类型.从普利尔,但不明白.
类似的功能plyr:::.是plyr:::.:
plyr:::.
function (..., .env = parent.frame())
{
structure(as.list(match.call()[-1]), env = .env, class = "quoted")
}
<environment: namespace:plyr>
Run Code Online (Sandbox Code Playgroud)
这将返回一个列表并为其分配一个"引用"的类.它所做的就是匹配.()封闭环境中列名的参数.在不同的环境中尝试:
with(iris, .(Sepal.Length, Species))
List of 2
$ Sepal.Length: symbol Sepal.Length
$ Species : symbol Species
- attr(*, "env")=<environment: 0x2b33598>
- attr(*, "class")= chr "quoted"
Run Code Online (Sandbox Code Playgroud)
接下来你对这个对象做了什么,取决于你的目的.有几种方法可以使用这个类:
methods(class="quoted")
[1] as.quoted.quoted* c.quoted* names.quoted* print.quoted* [.quoted*
Non-visible functions are asterisked
Run Code Online (Sandbox Code Playgroud)
所以,如果你正在寻找类似的功能.(),也许你可以简单地使用.()