R — это язык программирования для статистических вычислений и визуализации данных . Он был принят в области интеллектуального анализа данных , биоинформатики и анализа данных . [8]
Базовый язык R дополнен большим количеством пакетов расширений , содержащих код многократного использования, документацию и примеры данных.
Программное обеспечение R — это бесплатное программное обеспечение с открытым исходным кодом . Он лицензирован проектом GNU и доступен по лицензии GNU General Public License . [3] Он написан в основном на C , Fortran и самом R. Предварительно скомпилированные исполняемые файлы предоставляются для различных операционных систем .
Будучи интерпретируемым языком , R имеет собственный интерфейс командной строки . Кроме того, доступно несколько сторонних графических пользовательских интерфейсов , таких как RStudio — интегрированная среда разработки — и Jupyter — интерфейс ноутбука .
R был основан профессорами Россом Ихакой и Робертом Джентльманом как язык программирования для преподавания вводной статистики в Оклендском университете . [9] Этот язык был создан на основе языка программирования S , причем большинство программ S могут работать в R без изменений . [6] Язык также был вдохновлен лексической областью действия Scheme , позволяющей использовать локальные переменные. [1]
Название языка R происходит от того, что он является преемником языка S, а также от общей первой буквы авторов, Росса и Роберта. [10] В августе 1993 года Ихака и Джентльмен разместили двоичный файл R на StatLib — веб-сайте архива данных . В то же время они объявили о публикации в списке рассылки s-news . [11] 5 декабря 1997 года R стал проектом GNU , когда была выпущена версия 0.60. [12] 29 февраля 2000 года была выпущена первая официальная версия 1.0. [13]
Пакеты R представляют собой наборы функций, документации и данных, которые расширяют R. [14] Например, пакеты добавляют такие функции отчетов, как RMarkdown , Knitr и Sweave . Простота установки и использования пакетов способствовала распространению этого языка в науке о данных . [15]
Комплексная сеть архивов R (CRAN) была основана в 1997 году Куртом Хорником и Фрицем Лейшем для размещения исходного кода R , исполняемых файлов, документации и пакетов, созданных пользователями. [16] Его название и объем имитируют Comprehensive TeX Archive Network и Comprehensive Perl Archive Network . [16] Изначально у CRAN было три зеркала и 12 дополнительных пакетов. [17] По состоянию на декабрь 2022 года у него 103 зеркала [18] и 18 976 добавленных пакетов. [19] Пакеты также доступны в репозиториях R-Forge, Omegahat и GitHub.
В представлении задач на веб-сайте CRAN перечислены пакеты в таких областях, как финансы, генетика, высокопроизводительные вычисления, машинное обучение, медицинская визуализация, метаанализ , социальные науки и пространственная статистика.
Проект Bioconductor предоставляет пакеты для анализа геномных данных, комплементарной ДНК , микрочипов и методов высокопроизводительного секвенирования .
Пакеты добавляют возможность реализации различных статистических методов, таких как линейное , обобщенное линейное и нелинейное моделирование, классические статистические тесты , пространственный анализ, анализ временных рядов и кластеризация .
Пакет tidyverse организован так, чтобы иметь общий интерфейс для доступа и обработки данных, содержащихся в структуре данных фрейма данных, двумерной таблице строк и столбцов. Каждая функция пакета предназначена для объединения всех остальных функций пакета. [20]
Установка пакета происходит только один раз. Чтобы установить tidyverse : [20]
> install.packages ( "tidyverse" )
Чтобы создать экземпляры функций, данных и документации пакета, выполните функцию library()
. Чтобы создать экземпляр tidyverse : [a]
> библиотека ( тидиверс )
R поставляется с консолью командной строки . Для установки доступны различные интегрированные среды разработки (IDE). В число IDE для R входят R.app (только для OSX/macOS), Rattle GUI , R Commander , RKWard , RStudio и Tinn-R.
IDE общего назначения, поддерживающие R, включают Eclipse через плагин StatET и Visual Studio через R Tools for Visual Studio .
Редакторы, поддерживающие R, включают Emacs , Vim через плагин Nvim-R, Kate , LyX через Sweave , WinEdt (веб-сайт) и Jupyter (веб-сайт).
Языки сценариев, поддерживающие R, включают Python (веб-сайт), Perl (веб-сайт), Ruby (исходный код), F# (веб-сайт) и Julia (исходный код).
Языки программирования общего назначения, поддерживающие R, включают Java через сервер сокетов Rserve и .NET C# (веб-сайт).
Статистические платформы, которые используют R в фоновом режиме, включают Jamovi и JASP .
Команда R Core была основана в 1997 году для поддержки исходного кода R. Фонд статистических вычислений R был основан в апреле 2003 года для оказания финансовой поддержки. Консорциум R — это проект Linux Foundation по развитию инфраструктуры R.
R Journal — это академический журнал с открытым доступом ,в котором публикуются короткие и средние статьи об использовании и разработке R. Он включает статьи о пакетах, советы по программированию, новости CRAN и основные новости.
Сообщество R проводит множество конференций и личных встреч. К этим группам относятся:
Основная реализация R написана в основном на C , Fortran и самом R. Другие реализации включают в себя:
Microsoft R Open (MRO) был реализацией R. По состоянию на 30 июня 2021 года Microsoft начала поэтапный отказ от MRO в пользу распространения CRAN. [23]
Хотя R является проектом с открытым исходным кодом , некоторые компании предоставляют коммерческую поддержку:
Следующие примеры иллюстрируют основной синтаксис языка и использование интерфейса командной строки. (Расширенный список стандартных возможностей языка можно найти в руководстве по R, «Введение в R». [24] ).
В R обычно предпочтительным оператором присваивания является стрелка, состоящая из двух символов <-
, хотя =
в некоторых случаях ее можно использовать. [25]
> x <- 1 : 6 # Создать числовой вектор в текущей среде > y <- x ^ 2 # Создать вектор на основе значений x. > print ( y ) # Распечатываем содержимое вектора. [1] 1 4 9 16 25 36 > z <- x + y # Создать новый вектор, представляющий собой сумму x и y > z # Вернуть содержимое z в текущую среду. [1] 2 6 12 20 30 42 > z_matrix <- матрица ( z , nrow = 3 ) # Создайте новую матрицу, которая превращает вектор z в матричный объект 3x2 > z_matrix [,1] [,2] [1,] 2 20 [2,] 6 30 [ 3,] 12 42 > 2 * t ( z_matrix ) -2 # Транспонируем матрицу, умножаем каждый элемент на 2, вычитаем 2 из каждого элемента матрицы и возвращаем результаты на терминал. [,1] [,2] [,3] [1,] 2 10 22 [2,] 38 58 82 > new_df <- data.frame ( t ( z_matrix ), row.names = c ( 'A' , 'B' )) # Создайте новый объект data.frame, который содержит данные из транспонированной z_matrix, с именами строк 'A ' и 'B' > name ( new_df ) <- c ( 'X' , 'Y' , 'Z' ) # Установите имена столбцов new_df как X, Y и Z. > print ( new_df ) # Распечатайте текущий Результаты. XYZ А 2 6 12 Б 20 30 42 > new_df $ Z # Вывод столбца Z [1] 12 42 > new_df $ Z == new_df [ 'Z' ] && new_df [ 3 ] == new_df $ Z # Доступ к столбцу data.frame Z можно получить, используя синтаксис $Z, ['Z'] или [3] и значения одинаковы. [1] ВЕРНО > атрибуты ( new_df ) # Вывести информацию об атрибутах объекта new_df $names [1] "X" "Y" "Z" $row.names [1] «А» «Б»$класс [1] "data.frame"> атрибуты ( new_df ) $ row.names <- c ( 'one' , 'two' ) # Получите доступ и затем измените атрибут row.names; также можно сделать, используя rownames() > new_df XYZ один 2 6 12 два 20 30 42
Одна из сильных сторон R — простота создания новых функций. [26] Объекты в теле функции остаются локальными для функции, и может быть возвращен любой тип данных.
Создайте функцию:
# Входные параметры: x и y. # Функция возвращает линейную комбинацию x и y. f <- функция ( x , y ) { z <- 3 * x + 4 * y # этот оператор return() является необязательным return ( z ) }
Выход использования:
> ж ( 1 , 2 ) [1] 11 > ж ( с ( 1 , 2 , 3 ), с ( 5 , 3 , 4 )) [1] 23 18 25 > ж ( 1 : 3 , 4 ) [1] 19 22 25
В версии R 4.1.0 был представлен собственный оператор канала , . [27] Этот оператор позволяет пользователям объединять функции одну за другой вместо вызова вложенной функции.|>
> nrow ( subset ( mtcars , cyl == 4 )) # Вложено без символа вертикальной черты [1] 11 > mtcars |> subset ( cyl == 4 ) |> nrow () # Использование символа вертикальной черты [1] 11
Другой альтернативой вложенным функциям, в отличие от использования вертикальной черты, является использование промежуточных объектов. Однако некоторые утверждают, что использование оператора канала приведет к созданию кода, который будет легче читать. [20]
> mtcars_subset_rows <- subset ( mtcars , cyl == 4 ) > num_mtcars_subset <- nrow ( mtcars_subset_rows ) > print ( num_mtcars_subset ) [1] 11
Язык R имеет встроенную поддержку моделирования данных и графики. В следующем примере показано, как R может создать и построить линейную модель с остатками.
# Создаем значения x и y x <- 1 : 6 y <- x ^ 2 # Модель линейной регрессии y = A + B * x model <- lm ( y ~ x ) # Отобразить подробное описание сводки модели ( model )# Создаём макет 2 на 2 для фигур номинала ( mfrow = c ( 2 , 2 )) # Вывод диагностических графиков модельного графика ( модель )
Выход:
Остатки: 1 2 3 4 5 6 7 8 9 10 3,3333 -0,6667 -2,6667 -2,6667 -0,6667 3,3333Коэффициенты: Оценка станд. Значение t ошибки Pr(>|t|) (Интерцепт) -9,3333 2,8441 -3,282 0,030453 * x 7,0000 0,7303 9,585 0,000662 *** --- Знач. коды: 0 '***' 0,001 '**' 0,01 '*' 0,05 '.' 0,1 '' 1Остаточная стандартная ошибка: 3,055 на 4 степенях свободы. Множественный R-квадрат: 0,9583, скорректированный R-квадрат: 0,9478. F-статистика: 91,88 на 1 и 4 DF, значение p: 0,000662.
Этот пример набора Мандельброта подчеркивает использование комплексных чисел . Он моделирует первые 20 итераций уравнения , где представляют собой различные комплексные константы.z = z2 + c
c
Предварительно установите пакет, предоставляющий эту write.gif()
функцию:
install.packages ( "caTools" )
Р Исходный код:
библиотека ( caTools )jet.colors <- colorRampPalette ( c ( «зеленый» , «розовый» , «#007FFF» , «голубой» , «#7FFF7F» , «белый» , «#FF7F00» , «красный» , «#7F0000» )) dx <- 1500 # определение ширины dy <- 1400 # определение высоты C <- complex ( real = Rep ( seq ( -2.2 , 1.0 , length.out = dx ), каждый = dy ), imag = Rep ( seq ( -1.2 , 1.2 , length.out = dy ), dx )) # преобразуем в матрицу комплексных чисел C <- матрица ( C , dy , dx ) # инициализируем выходной 3D-массив X <- array ( 0 , c ( dy , dx , 20 )) Я <- 0 # цикл с 20 итерациями for ( k in 1:20 ) { # центрально-разностное уравнение Z <- Z ^ 2 + C # фиксируем результаты X [, , k ] <- exp ( - abs ( Z )) } write.gif ( X , "Mandelbrot.gif" , col = jet.colors , задержка = 100 )
Мы поставили перед собой цель разработать язык, достаточный для преподавания вводных курсов по статистике в Окленде.
Язык R и связанное с ним программное обеспечение играют важную роль в вычислениях для науки о данных.
... Пакеты R предоставляют инструменты для широкого круга целей и пользователей.