我非常喜欢xts
的{{1}}索引搜索,我为data.frame
创建了一个。
"%d%"=function(df1,dt,col='dt_pregao') {
if(regexpr('/',dt)>0){
dt=strsplit(dt,'/')[[1]]
return(df1[df1[,col] %>=<% c(dt[1],dt[2]),])}
return(df1[df1[,col]==dt,])}
这有效:
opx%d%'2018-03-09'
我看到我可以将列名作为参数 但是如何使用中缀表示法传递第三个参数?这些都不起作用:
opx%d%c('2018-03-09','dt_pregao')
(opx%d%'2018-03-09')'dt_pregao'
P.S。
"%>=<%"<-function(x,rng) x>=rng[1] & x<=rng[2]
opx
示例:
structure(list(dt_pregao = structure(c(17487, 17487, 17487, 17487,
17599, 17599, 17599, 17599, 17599, 17599), class = "Date"), cd_papel = c("PETRK16",
"PETRK81", "PETRK18", "PETRK4", "PETRK47", "PETRK48", "PETRK53",
"PETRK7", "PETRK70", "PETRK1"), veFech = c(0.08, 0, 0.01, 0.01,
0.01, 0.01, 0.03, -9.06, 0.12, -0.01)), .Names = c("dt_pregao",
"cd_papel", "veFech"), row.names = c(NA, -10L), class = "data.frame")
答案 0 :(得分:2)
要调用具有2个以上参数的中缀函数,您需要使用其前缀形式:
`%sum%` <- function(x, y, z = 0) x + y + z
4 %sum% 5
## [1] 9
`%sum%`(4, 5, 6)
## [1] 15
交替重新定义它,以便它只需要2个参数。