Hello,
I have a function 'ewrap' (see below for definition).
It takes 3 expressions and returns another expression e.g.
map <- ewrap({
len <- length(r$addon)
rhcollect(len,1)
})
becomes:
expression({
NULL
result <- mapply(function(.index, k, r) {
{
len <- length(r$addon)
rhcollect(len, 1)
}
}, 1:length(map.values), map.keys, map.values)
NULL
})
attr(,"class")
[1] "expression" "rhmr-map"
ewrap is defined in the GlobalEnv. In my package (Rhipe), a function rhwrap
has the exact same definition
rhwap <- function(co1=NULL,before=NULL,after=NULL){
co <- substitute(co1); before=substitute(before)
j <- as.expression(bquote({
.(BE)
result <- mapply(function(.index,k,r){
.(CO)
},1:length(map.values),map.keys,map.values)
.(AF)
},list(CO=co,BE=before,AF=after)))
class(j) <- c(class(j),"rhmr-map")
j
}
but the following two are different,
map <- ewrap({
len <- length(r$addon)
rhcollect(len,1)
})
and
map2 <- rhwrap({
len <- length(r$addon)
rhcollect(len,1)
})
(because serialize(map,NULL) != serialize(map2,NULL))
I guess this is because both functions(ewrap and rhwrap) return an
environment in which they are defined and in the case
of rhwrap this is the Rhipe package namespace/environment (i'm not sure
what jargon i should use here).
So my questions are:
1. how do i inspect the extra information that rhwrap is adding to its
return value
2. How do i remove this, so that it behaves like ewrap
Thanks in advance
Saptarshi
ewrap <- function(co1=NULL,before=NULL,after=NULL){
co <- substitute(co1); before=substitute(before)
j <- as.expression(bquote({
.(BE)
result <- mapply(function(.index,k,r){
.(CO)
},1:length(map.values),map.keys,map.values)
.(AF)
},list(CO=co,BE=before,AF=after)))
class(j) <- c(class(j),"rhmr-map")
j
}
[[alternative HTML version deleted]]