创建类似的功能"." 来自Plyr

Dav*_*ave 0 r

希望有人可以发布一个类似于"."的自定义函数的示例.在普利尔.

我所拥有的是一个数据框.我在哪里持续运行查询,例如:

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等...

我试着查看"."的返回类型.从普利尔,但不明白.

And*_*rie 6

类似的功能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)

所以,如果你正在寻找类似的功能.(),也许你可以简单地使用.()