]]> ]]>
Править | Обсудить | История

R

Дата создания:
1997
Создан под влиянием:
Парадигма:
Типизация:
Принятые расширения файлов:
.r
Реализации и версии (свернуть все | развернуть все):
Язык программирования

R — язык программирования системы статистической обработки данных и работы с графикой.

Язык был создан сотрудниками Оклендского университета Ross Ihaka и Robert Gentleman как развитие языка S, дополненное несколькими новыми идеями, позаимствованными из Scheme. Название языка основано на именах разработчиков и на отсылке к языку S. Разработка языка началась в 1993 году, и в апреле 1997 году был выпущен первый не-альфа релиз. С середины 1997 года разработка ведется так называемой R Core Team.

В настоящее время язык является частью GNU Project и распространяется под лицензией GNU GPL в виде исходных кодов и откомпилированных приложений под Linux, Freebsd, Windows, Solaris, Mac OS X и некоторые другие *nix-системы.

Основа системы R — интерпретируемый язык, поддерживающий структурный, модульный и объектно-ориентированный стили программирования. Язык R предоставляет программисту огромное множество встроенных статистических и графических инструментов, включая линейное модели, модели нелинейной регрессии, статистические тесты, анализ временных рядов, классификацию, кластеризацию и т.д. Кроме того, возможности базового языка легко расширяются с помощью пакетов: в базовую поставку включены 8 основных пакетов, а всего доступно более 800 специализированных дополнений. Наконец, R частично обратно совместим с S — многие программы, написанные на S, запустятся на R без изменений.

R широко используется в среде специалистов по статистике и анализу данных.

Основной тип данных языка — массивы. Массивы в R выступают как контейнеры (упорядоченные наборы однородных данных), а не математические вектора (элементы векторного пространства). Второй важнейший контейнер — списки, упорядоченные наборы неоднородных данных, некоторые из которых могут быть именованными. Скаляры представляют собой векторы длины 1. Скалярные типы данных, поддерживаемые языком, — logical, integer, double, complex, character, и raw.

Элементы синтаксиса:

Комментарий до конца строки #
Регистрозависимость да
Присваивание значения переменной <varname> <- value
Группировка выражений ( ... )
Блок { ... }
Равенство ==
Сравнение < > <= >=
Определение функции <fname> <- function(<arglist>) { ... }
Вызов функции <fname>(<arglist>)
Если - то if (condition) ...
Если - то - иначе if (condition) ... else ...
Цикл for - next для диапазона целых чисел с инкрементом на 1 for (i in 1:10)

Логотип R
Логотип R

Примеры:

Hello, World!:

Пример для версий R 2.10.1

R позволяет заключать строки как в одинарные кавычки, так и в двойные, хотя при выводе использует только двойные.

print("Hello, World!")

Числа Фибоначчи:

Пример для версий R 2.10.1

Используется рекурсивное вычисление чисел Фибоначчи. Функция создается как объект и присваивается переменной fib. Если функция return не вызывается в явном виде, функция возвращает значение последней выполненной команды.

Функция print.table выводит массив, полученный в результате применения функции fib к массиву чисел от 1 до 16, как таблицу, т.е. в одну строку. Использование функции print вывело бы элементы массива по одному на строку.

fib <- function(n) {
  if (n < 2)
    n
  else
    fib(n - 1) + fib(n - 2)
}

print.table(lapply(1:16, fib))

Факториал:

Пример для версий R 2.10.1

Используется итеративное вычисление факториала. Функция paste конкатенирует безымянные аргументы, именованный аргумент sep задает разделитель, использующийся при конкатенации (по умолчанию — пробел).

f <- 1
for (n in 0:16) {
  print(paste(n, "! = ", f, sep = ""))
  f <- f * (n + 1)
}

Факториал:

Пример для версий R 2.10.1

Используется встроенная функция prod, вычисляющая произведение всех элементов массива. Для n = 0 ответ был бы неправильным, т.к. массив 1:0 состоит из двух элементов — 1 и 0.

for (n in 1:16) {
  print(paste(n, "! = ", prod(1:n), sep = ""))
}

Квадратное уравнение:

Пример для версий R 2.10.1

Основной средой работы с R является интерактивный интерпретатор, поэтому достаточно определить функцию, решающую уравнение, и вызывать ее с нужными коэффициентами. Используется встроенный тип complex.

quadratic <- function(a, b, c) {
  if (a == 0) {
    print("Not a quadratic equation.")
  } else {
    d <- b * b - 4 * a * c
    if (d == 0) {
      print(paste("x =", -b / 2 / a))
    } else
      if (d > 0) {
        print(paste("x =", (-b + sqrt(d) * c(1, -1)) / 2 / a))
      } else {
        print(paste("x =", (-b + sqrt(as.complex(d)) * c(1, -1)) / 2 / a))
      }
  }
}

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам