Угоди, правила і основа

Існує багато способів написання коду R для виконання певного завдання, і ще більше існує способів створити цей код R за допомогою JS. Як саме ви це зробите — це ваша справа. Втім, існує певний набір правил, які ви маєте виконувати, і базові відомості, які ви маєте розуміти.

Опис середовища local()

Майже завжди вам доведеться створювати один або декілька тимчасових об’єктів R у коді, який створюватиметься вашим додатком. Зазвичай, поява цих об’єктів у робочому просторі користувача і потенційний перезапис змінних користувача є небажаним. Отже, увесь створений додатком код запускається у середовищі local() (див. сторінку довідки R щодо функції local()). Це означає, що усі створені вами змінні є тимчасовими і постійно не зберігатимуться.

Якщо користувач явним чином попросить зберегти змінну, вам доведеться надати об’єктові значення за допомогою виразу .GlobalEnv$objectname <- значення. Загалом, не використовуйте оператор <<-. Ви не обов’язково надає значення у .GlobalEnv.

Однією з важливих проблем є використання eval(). Вам варто пам’ятати, що типово eval використовуватиме для обчислень поточне середовище, тобто локальне середовище (local). У більшості випадків усе працюватиме як слід, але не завжди. Таким чином, якщо вам потрібно скористатися eval(), вам, ймовірно, варто вказати параметр envir: eval(..., envir=globalenv()).

Форматування коду

Найголовніше, щоб ваш код мовою R працював як слід, але також важливо, щоб його було просто читати. Тому, будь ласка, не забувайте про форматування. Ось декілька правил:

Звичайні інструкції верхнього рівня у R вирівнюються ліворуч.

Інструкції підлеглого блоку має бути записано із відступом у одну табуляцію (див. наведений нижче приклад).

Якщо ви виконуєте дуже складні обчислення, додавайте до них коментарі, особливо для позначення певних логічних частин коду. Зауважте, що існує спеціальна функція comment() для додавання придатних до перекладу коментарів у створений код.

Наприклад, створений код може виглядати так, як у наведеному нижче фрагменті. Той самий код без відступів і коментарів буде доволі важко читати, хоча він і не дуже складний:

# спочатку визначаємо хилитання і обертання
my.wobble <- wobble (x, y)
my.rotation <- wobble.rotation (my.wobble, z)

# метод ухилення має бути вибрано відповідно до обертання
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)
}
                

Робота зі складними параметрами

Багато додатків можуть виконувати декілька функцій. Наприклад, додаток «Описова статистика» може обчислювати середнє, діапазон, суму, добуток, медіану, довжину вибірки тощо. Втім, типово, користувачу буде потрібна лише частина з результатів обчислень. У цьому випадку, будь ласка, намагайтеся робити створений код R якомога простішим. Код має містити лише ті команди, які відповідають вибраним вами параметрам. Щоб досягти цього, скористайтеся прикладом типового взірця компонування (у JS; тут domean, domedian і dosd будуть елементами <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");
        //...
}