Chociaż byłoby możliwe zrobienie tego poprzez przypisanie do globalnego środowiska naturalnego, co następuje neater moim zdaniem, ponieważ domyślne zachowanie może być łatwo przywrócone przez detach
ing środowiska:
Pierwsze niektóre funkcje demo odkąd nie wiem, który pakiet chciałeś użyć:
packageDemo <- new.env()
makeFun <- function(x) {x;function(param) c(x, param)}
for (i in paste0("f", letters)) assign(i, makeFun(i), packageDemo)
Oto moja funkcja pakietu curry. Pobiera nazwę środowiska lub paczki jako wektor znaków (np. "package:myPackage"
). Wszystkie funkcje w środowisku są przekształcane i dodawane do nowego środowiska, które jest zwracane. W razie potrzeby może to być attach
ed.
curryPackage <- function(package, ..., functionNames = NULL){
if (is.character(package) && !grepl("^package:", package)) {
package <- paste0("package:", package)
}
fnNames <- ls(package)
if (!is.null(functionNames)) {
fnNames <- fnNames[fnNames %in% functionNames]
}
fnNames <- fnNames[vapply(fnNames, function(x) is.function(get(x, package)), logical(1))]
fnList <- lapply(fnNames, function(x){
functional::Curry(get(x, package), ...)
})
names(fnList) <- fnNames
list2env(fnList)
}
Teraz niektóre dema
attach(packageDemo)
fc("Testing")
#[1] "fc" "Testing"
fc()
#Error in fc() : argument "param" is missing, with no default
newPack <- curryPackage(packageDemo, param = "demo")
attach(newPack)
#The following objects are masked from packageDemo:
#
# fa, fb, fc, fd, fe, ff, fg, fh, fi, fj, fk, fl, fm, fn, fo, fp, fq, fr, fs, ft, fu, fv, fw, fx, fy, fz
fc("Testing")
#Error in (function (param) : unused argument ("Testing")
fc()
#[1] "fc" "demo"