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
Ссылки:
Примеры:
Hello, World!:
Пример для версий R 2.10.1R позволяет заключать строки как в одинарные кавычки, так и в двойные, хотя при выводе использует только двойные.
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
]]>