Обычно я пишу код на Python, однако один из моих курсов в моем университете рекомендовал мне R в качестве основного языка представления. У меня была возможность отправить свои задания на Python, однако я решил выбрать R, потому что это один из языков, которые действительно универсальны для статистики, анализа данных и исследований пользователей. Раньше я в основном играл с Plotly, Matplotlib, Pandas и Numpy для своих задач визуализации данных, поэтому изучение R для одних и тех же вещей было несколько повторяющимся, но я хотел получить некоторый практический опыт работы с синтаксисом языка и хотел знать, насколько он мощный и удобный инструмент как питон!
Установка
R — это бесплатная программная среда для статистических вычислений и графики. Он компилируется и работает на самых разных платформах UNIX, Windows и MacOS.
Скачайте программный пакет R прямо сейчас или вы можете просто установить Anaconda, и он сделает всю работу за вас. (Рекомендуемые)
R — интерпретируемый язык
Он строго чувствителен к регистру и символам. Программное обеспечение интерпретирует данные вами инструкции и выполняет код, чтобы вернуть вам результаты. Обратите внимание, что R — это язык высокого уровня, и его уровень абстракции далек от деталей выполнения на компьютере. Таким образом, вам не нужно заниматься сложными деталями управления выделением машинной памяти, а просто сосредоточиться на более широкой картине, которую вы хотите получить.
Язык R — это диалект языка S, который был разработан в 1980-х годах и с тех пор широко используется в статистическом сообществе. Его главный разработчик, Джон М. Чемберс, был награжден премией ACM Software Systems Award 1998 года за S. Синтаксис языка имеет внешнее сходство с C, но семантика относится к разновидности FPL (язык функционального программирования) с более сильным сходством с Lisp и APL. . В частности, он позволяет «вычислять на языке», что, в свою очередь, позволяет писать функции, принимающие выражения в качестве входных данных, что часто полезно для статистического моделирования и графики.
R Комментарии
> # Hello world! I am a comment
Установка пакетов
> install.packages("required_packages") > update.packages()
Мне нужна помощь
> ?median # this would show you the Description, Usage, Arguments, Reference etc.
Немного базовой математики с R
R — это объектно-ориентированный язык программирования. Используйте ‹- как оператор присваивания для объектов.
> 5+5 # Addition [1] 10 > 5*10 # Multiplication [1] 50 > 14/(8273+9237) #Division [1] 0.0007995431 > sqrt(x=21) #Square Root Function [1] 4.582576 > 2^8 #Power of 2 [1] 256 > log(x=1024,base=2) #logarithm [1] 10 > exp(x=10) [1] 22026.47 > > #Assignment operators > > x <- 10 > x^2 [1] 100 > > x = x^2 +90 > x [1] 190 > > # Although = & <- do the same thing it's better to use <- for assignment.
Р Векторы
Вы должны быть знакомы с массивами, списками других языков. Вектор — это комбинация элементов (то есть чисел, слов), обычно создаваемая с помощью c(), seq() или rep(). Все элементы вектора должны быть одного типа!
Векторы можно рассматривать как смежные ячейки, содержащие данные. Доступ к ячейкам осуществляется с помощью операций индексации, таких как x[5].
> vec1 <- c() > vec1 NULL > vec1 <- c(1,2,3,4.5,67) > vec1 [1] 1.0 2.0 3.0 4.5 67.0 > vec2 <- c("hello","world") > vec2 [1] "hello" "world" > vec3 <- c(100,90) > vec4 <- c(vec1,vec3) > vec4 [1] 1.0 2.0 3.0 4.5 67.0 100.0 90.0 > vec5 <- c(vec1,vec2) > vec5 [1] "1" "2" "3" "4.5" "67" "hello" [7] "world" > vec5[1] [1] "1"
Прием входных данных и печать
При вводе данных обратите внимание, что высота (целое число) хранится как символьный тип данных, и мы явно преобразовали его в целочисленный тип данных.
> # Take input from user. > my.name <- readline(prompt="Enter your favorite color:") Enter your favorite color:Blue > my.height <- readline(prompt="Enter your Height:") Enter your Height:6.2 > typeof(my.height) [1] "character" > my.height <- as.integer(my.height) > typeof(my.height) [1] "integer" > print("Hi", my.name,"is my fav color and my height is",my.height) Error in print.default("Hi", my.name, "is my fav color and my height is", : invalid 'digits' argument In addition: Warning message: In print.default("Hi", my.name, "is my fav color and my height is", : NAs introduced by coercion > > print(paste("Hi,", my.name,"is my fav color and my height is",my.height)) [1] "Hi, Blue is my fav color and my height is 6"
R-списки
Списки («общие векторы») — еще один вид хранения данных. Списки имеют элементы, каждый из которых может содержать объект R любого типа, т. е. элементы списка не обязательно должны быть одного типа. Доступ к элементам списка осуществляется с помощью трех различных операций индексации.
Индексация R: запутанная, но мощная
R содержит несколько конструкций, которые позволяют получить доступ к отдельным элементам или подмножествам посредством операций индексации. В случае базовых векторных типов можно получить доступ к i-му элементу с помощью x[i], но есть также индексация списков, матриц и многомерных массивов. Существует несколько форм индексации в дополнение к индексации с одним целым числом. Индексацию можно использовать как для извлечения части объекта, так и для замены частей объекта (или добавления частей).
В основном,
- Элементы внутри объектов индексируются с помощью [] и [[]].
- матрицы и фреймы данных: [i,j] для i-й строки, j-го столбца
- массивы: [i,j,k] для i-й строки, j-го столбца, k-го уровня
- списки: [[i]] для i-го элемента
Итак, теперь вы понимаете разницу между [] и [[]].
> # Some List Operations > # Sum > sum(0:100) [1] 5050 > a = c(1) > a [1] 1 > a = c(a,LETTERS[1:10]) > a [1] "1" "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" > length(a) [1] 11 > #Using seq function > s = seq(from=1,to=10,by=1) > s [1] 1 2 3 4 5 6 7 8 9 10 > s = seq(from=1,to=10,by=2) > s [1] 1 3 5 7 9 > # Accessing List members > s[3] [1] 5 > #append to list > s <-append(s,2.4) > s [1] 1.0 3.0 5.0 7.0 9.0 2.4 > #append after position > s <- append(s,100,after=3) > s [1] 1.0 3.0 5.0 100.0 7.0 9.0 2.4 > # Operating on all list values at once > s = s + 3 > s [1] 4.0 6.0 8.0 103.0 10.0 12.0 5.4 > typeof(s) [1] "double" > typeof(a) [1] "character"
Загрузка наборов данных
Предположим, вы хотите загрузить набор данных foo.
- Если набор данных находится в существующем пакете R, загрузите пакет и введите data(foo).
- Формат RData, введите load(foo)
- .txt или других текстовых форматов, введите read.table("foo.txt")
- Формат .csv, введите read.csv("foo.txt")
- .dta (Stata), загрузите стороннюю библиотеку и введите read.dta("foo.dta")
Для сохранения объектов в этих форматах используйте эквивалентные команды write.table(), write.csv() и т. д.
Поиск рабочего каталога
При загрузке или сохранении набора данных или объекта R будет искать в текущем рабочем каталоге. Если ваш рабочий каталог находится не там, где находится файл, R не найдет его, поэтому убедитесь, что вы изменили рабочий каталог.
- Чтобы перейти в рабочий каталог foo, используйте setwd("foo")
- Чтобы увидеть текущий рабочий каталог, введите getwd().
Установка и использование пакетов
Чтобы использовать пакеты, вам нужно установить их (сделайте это один раз) и загрузить их (каждый раз, когда вы открываете R). Чтобы установить пакет с именем foo:
- Введите install.packages(“foo”)
- Выберите репозиторий CRAN. Чтобы загрузить пакет с именем foo: введите library(foo)
За этим постом последуют две статьи, в которых будут представлены некоторые базовые и расширенные концепции использования некоторых из лучших пакетов R, таких как tidyr, ggplot2 и Shiny.