Konvencije, politike in ozadje

Obstaja veliko načinov za pisanje R kode za določeno nalogo in obstaja še več načinov za ustvarjanje te R kode iz JS. Kako točno boste to storili, je prepuščeno vam. Kljub temu morate upoštevati številne vidike in osnovne informacije, ki jih morate razumeti.

Razumevanje okolja local()

Pogosteje boste morali ustvariti enega ali več začasnih R predmetov v kodi, ki jo ustvari vaš vtičnik. Običajno ne želite, da so postavljeni v delovni prostor uporabnika, saj lahko celo prepišejo uporabniške spremenljivke. Zato se vsa koda, ustvarjena z vtičnikom, izvaja v okolju local() (glejte R stran s pomočjo za funkcijo local()). To pomeni, da so vse spremenljivke, ki jih ustvarite, začasne in ne bodo trajno shranjene.

Če uporabnik izrecno zahteva shranjevanje spremenljivke, boste morali temu objektu dodeliti z uporabo .GlobalEnv$objectname <- value. Na splošno ne uporabljajte operatorja <<-. Ni nujno, da bo dodelil v .GlobalEnv.

Ena pomembna past je uporaba eval(). Tukaj morate upoštevati, da bo eval privzeto uporabil trenutno okolje za vrednotenje, tj. lokalnega. To bo večinoma dobro delovalo, vendar ne vedno. Torej, če morate uporabiti eval(), boste verjetno želeli podati parameter envir: eval(..., envir=globalenv()).

Oblikovanje kode

Najpomembnejša stvar je za vaše ustvarjene R kode za delo, vendar mora biti tudi enostavna za branje. Zato bodite pozorni tudi na oblikovanje. Nekaj premislekov:

Normalna najvišja raven R stavki morajo biti levo poravnani.

Stavki v spodnjem bloku morajo biti zamaknjeni z enim tabulatorjem (glejte primer spodaj).

Če delate zelo zapletene izračune, tu in tam dodajte komentar, npr. za označevanje logičnih odsekov. Upoštevajte, da obstaja posebna funkcija comment() za vstavljanje prevedljivih komentarjev v ustvarjeno kodo.

Na primer, ustvarjena koda je lahko videti takole. Enako kodo brez zamikov ali komentarjev bi bilo precej težko brati, kljub skromni zapletenosti:

# first determine the wobble and rotation
my.wobble <- wobble (x, y)
my.rotation <- wobble.rotation (my.wobble, z)

# boggling method needs to be chosen according to rotation
if (my.rotation > wobble.rotation.limit (x)) {
        method <- "foo"
        result <- boggle.foo (my.wobble, my.rotation)
} else {
        method <- "bar"
        result <- boggle.bar (my.wobble, my.rotation)
}
                

Ukvarjanje s kompleksnimi možnostmi

Številni vtičniki lahko naredijo več kot eno stvar. Na primer, vtičnik Descriptive Statistics lahko izračuna povprečje, obseg, vsoto, produkt, mediano, dolžino itd.. Vendar pa se bo uporabnik običajno odločil, da izvede le nekatere od teh izračunov. V tem primeru poskusite ohraniti ustvarjeno kodo čim bolj preprosto. Vsebovati mora samo dele, ki so pomembni za možnosti, ki so dejansko izbrane. Da bi to dosegli, je tukaj primer običajnih oblikovalskih vzorcev, kot bi jih uporabili (v JS; tukaj bi bili »domean«, »domedian« in »dosd« elementi <checkbox>):

function calculate () {
        echo ('x <- <' + getString ("x") + ')\n');
        echo ('results <- list ()\n');

        if (getBoolean ("domean.state")) echo ("results$" + i18n ("Mean value") + " <- mean (x)\n");
        if (getBoolean ("domedian.state")) echo ("results$" + i18n ("Median") + " <- median (x)\n");
        if (getBoolean ("dosd.state")) echo ("results$" + i18n ("Standard deviation") + " <- sd (x)\n");
        //...
}