Absolute no idea why you would want to do this, but you can use eval
and parse
to create your own function to do that.
`%$%` <- function(df, seeker, cols=c("cyl","hp")) {
strparts <- strsplit(seeker, "\\.")[[1]]
sk <- ifelse(grepl("^[1-9]", strparts), paste0("==", strparts), strparts)
s <- paste(paste0("df$", cols, sk), collapse="&")
ans <- df[eval(parse(text=s)),]
split(ans, ans[,cols])
}
sample usage 1:
mtcars %$% "8.245"
# $`8.245`
# mpg cyl disp hp drat wt qsec vs am gear carb
# Duster 360 14.3 8 360 245 3.21 3.57 15.84 0 0 3 4
# Camaro Z28 13.3 8 350 245 3.73 3.84 15.41 0 0 3 4
sample usage 2:
mtcars %$% "4.<=100"
# $`4.52`
# mpg cyl disp hp drat wt qsec vs am gear carb
# Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
#
# $`4.62`
# mpg cyl disp hp drat wt qsec vs am gear carb
# Merc 240D 24.4 4 146.7 62 3.69 3.19 20 1 0 4 2
#
# $`4.65`
# mpg cyl disp hp drat wt qsec vs am gear carb
# Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.9 1 1 4 1
#
# $`4.66`
# mpg cyl disp hp drat wt qsec vs am gear carb
# Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
# Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
#
# $`4.91`
# mpg cyl disp hp drat wt qsec vs am gear carb
# Porsche 914-2 26 4 120.3 91 4.43 2.14 16.7 0 1 5 2
#
# $`4.93`
# mpg cyl disp hp drat wt qsec vs am gear carb
# Datsun 710 22.8 4 108 93 3.85 2.32 18.61 1 1 4 1
#
# $`4.95`
# mpg cyl disp hp drat wt qsec vs am gear carb
# Merc 230 22.8 4 140.8 95 3.92 3.15 22.9 1 0 4 2
#
# $`4.97`
# mpg cyl disp hp drat wt qsec vs am gear carb
# Toyota Corona 21.5 4 120.1 97 3.7 2.465 20.01 1 0 3 1#