stringtranslate.com

R (язык программирования)

R — это язык программирования для статистических вычислений и визуализации данных . Он был принят в области интеллектуального анализа данных , биоинформатики и анализа данных . [8]

Базовый язык R дополнен большим количеством пакетов расширений , содержащих код многократного использования, документацию и примеры данных.

Программное обеспечение R — это бесплатное программное обеспечение с открытым исходным кодом . Он лицензирован проектом GNU и доступен по лицензии GNU General Public License . [3] Он написан в основном на C , Fortran и самом R. Предварительно скомпилированные исполняемые файлы предоставляются для различных операционных систем .

Будучи интерпретируемым языком , R имеет собственный интерфейс командной строки . Кроме того, доступно несколько сторонних графических пользовательских интерфейсов , таких как RStudioинтегрированная среда разработки — и Jupyterинтерфейс ноутбука .

История

Росс Ихака, соавтор R

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 ggplot2.

Пакеты 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       

Моделирование и построение графиков

Диагностические графики на основе построения «модели» (см. функцию «plot.lm()»). Обратите внимание на математические обозначения, разрешенные в метках (нижний левый график).

Язык 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.

Набор Мандельброта

Графика «Mandelbrot.gif», созданная в R

Этот пример набора Мандельброта подчеркивает использование комплексных чисел . Он моделирует первые 20 итераций уравнения , где представляют собой различные комплексные константы.z = z2 + cc

Предварительно установите пакет, предоставляющий эту 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 )        

Смотрите также

дальнейшее чтение

Внешние ссылки

Портал

Примечания

  1. ^ При стандартной ошибке отображается список всех пакетов, от которых зависит tidyverse . Он также может отображать две ошибки, свидетельствующие о конфликте. Ошибки можно игнорировать.

Рекомендации

  1. ^ abc Морандат, Фрэнсис; Хилл, Брэндон; Освальд, Лео; Витек, январь (11 июня 2012 г.). «Оценка дизайна языка R: объекты и функции для анализа данных». Европейская конференция по объектно-ориентированному программированию . 2012 : 104–131. дои : 10.1007/978-3-642-31057-7_6 . Проверено 17 мая 2016 г. - через SpringerLink.
  2. Питер Далгаард (29 февраля 2024 г.). «Выпущена версия R 4.3.3» . Проверено 1 марта 2024 г.
  3. ^ ab «R — Каталог свободного программного обеспечения». каталог.fsf.org . Проверено 26 января 2024 г.
  4. ^ «R-скрипты». Mercury.webster.edu . Проверено 17 июля 2021 г.
  5. ^ «Семейство форматов данных R (.rdata, .rda)» . Лок.gov . 9 июня 2017 года . Проверено 17 июля 2021 г.
  6. ^ аб Хорник, Курт; Основная команда R (12 апреля 2022 г.). «Р FAQ». Комплексная сеть архивов R. 3.3 В чем разница между R и S?. Архивировано из оригинала 28 декабря 2022 года . Проверено 27 декабря 2022 г.
  7. ^ «Введение». Руководство Юлии . Архивировано из оригинала 20 июня 2018 года . Проверено 5 августа 2018 г.
  8. ^ Джорджи, Федерико М.; Сераоло, Кармин; Меркателли, Даниэле (27 апреля 2022 г.). «Язык R: двигатель для биоинформатики и науки о данных». Жизнь . 12 (5): 648. Бибкод : 2022Life...12..648G. дои : 10.3390/life12050648 . ПМЦ 9148156 . ПМИД  35629316. 
  9. ^ Ихака, Росс. «Проект R: краткая история и мысли о будущем» (PDF) . п. 12. Архивировано (PDF) из оригинала 28 декабря 2022 года . Проверено 27 декабря 2022 г. Мы поставили перед собой цель разработать язык, достаточный для преподавания вводных курсов по статистике в Окленде.
  10. ^ Хорник, Курт; Основная команда R (12 апреля 2022 г.). «Р FAQ». Комплексная сеть архивов R. 2.13 Что такое Фонд R?. Архивировано из оригинала 28 декабря 2022 года . Проверено 28 декабря 2022 г.
  11. ^ Ихака, Росс. «R: История прошлого и будущего» (PDF) . п. 4. Архивировано (PDF) оригинала 28 декабря 2022 г. Проверено 28 декабря 2022 г.
  12. Ихака, Росс (5 декабря 1997 г.). «Новая версия R для Unix». stat.ethz.ch.Архивировано из оригинала 12 февраля 2023 года . Проверено 12 февраля 2023 г.
  13. ^ Ихака, Росс. «Проект R: краткая история и мысли о будущем» (PDF) . п. 18. Архивировано (PDF) из оригинала 28 декабря 2022 года . Проверено 27 декабря 2022 г.
  14. ^ Уикхэм, Хэдли; Четинкая-Рундель, Шахта; Гролемунд, Гаррет (2023). R для науки о данных, второе издание . О'Рейли . п. XVIII. ISBN 978-1-492-09740-2.
  15. ^ Чемберс, Джон М. (2020). «S, R и наука о данных». Журнал Р. 12 (1): 462–476. дои : 10.32614/RJ-2020-028 . ISSN  2073-4859. Язык R и связанное с ним программное обеспечение играют важную роль в вычислениях для науки о данных. ... Пакеты R предоставляют инструменты для широкого круга целей и пользователей.
  16. ^ Аб Хорник, Курт (2012). «Комплексная сеть архивов R». ПРОВОДА Вычислительная статистика . 4 (4): 394–398. дои : 10.1002/wics.1212. ISSN  1939-5108. S2CID  62231320.
  17. Курт Хорник (23 апреля 1997 г.). «Объявляю: КРАН». р-помогите . Викиданные  Q101068595..
  18. ^ «Состояние зеркал CRAN». cran.r-project.org . Проверено 30 декабря 2022 г.
  19. ^ «CRAN — Внесенные пакеты» . cran.r-project.org . Проверено 29 декабря 2022 г.
  20. ^ abc Уикхэм, Хэдли; Четинкая-Рундель, Шахта; Гролемунд, Гаррет (2023). R для науки о данных, второе издание . О'Рейли . ISBN 978-1-492-09740-2.
  21. ^ Талбот, Джастин; ДеВито, Закари; Ханрахан, Пэт (1 января 2012 г.). «Riposte: компилятор, управляемый трассировкой, и параллельная виртуальная машина для векторного кода на R». Материалы 21-й международной конференции по параллельным архитектурам и методам компиляции . АКМ. стр. 43–52. дои : 10.1145/2370816.2370825. ISBN 9781450311823. S2CID  1989369.
  22. Джексон, Иоав (16 мая 2013 г.). TIBCO предлагает предприятиям бесплатный R. Мир ПК . Проверено 20 июля 2015 г.
  23. ^ «Взгляд в будущее R в Azure SQL и SQL Server». 30 июня 2021 г. Проверено 7 ноября 2021 г.
  24. ^ «Введение в R. Заметки о R: среда программирования для анализа данных и графики» (PDF) . Проверено 3 января 2021 г.
  25. ^ Основная группа разработки R. «Назначения с оператором =» . Проверено 11 сентября 2018 г.
  26. ^ Кабакофф, Роберт (2012). «Quick-R: определяемые пользователем функции». statmethods.net . Проверено 28 сентября 2018 г.
  27. ^ "Р: Новости R" . cran.r-project.org . Проверено 14 марта 2024 г.