1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
Within <- function(data, expr, ...){
if(inherits(data,"data.frame"))
UseMethod("Within")
else UseMethod("within")
}
Within.data.frame <- function (data, expr, ...)
{
parent <- parent.frame()
e <- evalq(environment(), data, parent)
eval(substitute(expr), e)
l <- rev(as.list(e, all.names = TRUE))
l <- l[!vapply(l, is.null, NA, USE.NAMES = FALSE)]
nl <- names(l)
del <- setdiff(names(data), nl)
data[nl] <- l
data[del] <- NULL
data
}
"%$$%" <- function(data,expr){
# parf <- parent.frame()
# nm <- deparse(x)
# res <- within(x,expr)
# res
res <- if(inherits(data,"data.frame"))
eval.parent(substitute(Within(data,expr)))
else
eval.parent(substitute(within(data,expr)))
nm <- deparse(substitute(data))
assign(nm,res,envir=parent.frame())
}
"%$%" <- function(data,expr){
eval.parent(substitute(with(data,expr)))
}
|