Cum să eliminați o funcție dintr-un script R? (Programare, R)

Janusz01 a intrebat.

Am făcut o funcție mean() care nu primește argumente. De fapt, am vrut să calculez media unor numere:

mean <- function() {
    ozonev <- data[1]
    mv <- is.na(ozonev)
    mean(ozonev)
}

Deoarece există o funcție predefinită mean() în R, acest cod intră în recursivitate. De asemenea, am încercat să redenumesc funcția principală, dar media anterioară există în continuare. mă poate ajuta cineva cum să înlătur acea funcție medie făcută de mine, astfel încât să recuperez funcționalitatea reală a funcției mean().

> source("solution.R")

> ls()

 [1] "colname" "data"    "firtr"   "fsr"     "last"    "mean"    "meano"  
 [8] "missv"   "rowno"   "x"       "y" 

solution.R este scriptul, iar mean este funcția. meano este funcția redenumită.

Comentarii

  • Să încep o sesiune nouă de R poate? –  > Por talat.
  • mean <- c(); match.fun(mean) –  > Por Khashaa.
3 răspunsuri
m0nhawk

Ar trebui să folosiți rm pentru a vă elimina mean funcție.

rm(mean)
# or, if you have an environment for this
rm(mean, envir = "<your_env>")

Dar nu puteți elimina funcția mean din base pachet. Este blocat pentru modificare.

Konrad Rudolph

Există o modalitate foarte simplă de a evita recursivitatea: apelați base::mean în mod explicit:

mean <- function() {
    ozonev <- data[1]
    mv <- is.na(ozonev)
    base::mean(ozonev)
}

Alternativ, puteți face ceva de genul acesta:

old_mean <- mean
mean <- function() {
    ozonev <- data[1]
    mv <- is.na(ozonev)
    old_mean(ozonev)
}

Acest lucru are avantajul că va apela orice pre-existente mean care ar fi putut suprapune anterior funcția base::mean. Cu toate acestea, o abordare mai curată este, de obicei, să să transforme o funcție într-o funcție generică S3, , și crearea unui generic pentru o anumită clasă.

Puteți edita funcția în interiorul scriptului R, sau în interiorul sesiunii interactive R, tastând comanda

man <- edit(main)

(Rețineți că trebuie să realocați rezultatul funcției edit, , așa cum am făcut eu aici)!

plhn

Încercați acest lucru.

mean <- NULL

(Nu știu exact de ce funcționează, dar funcționează).

Tags: