Обычно я пишу код на 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:

  1. Введите install.packages(“foo”)
  2. Выберите репозиторий CRAN. Чтобы загрузить пакет с именем foo: введите library(foo)

За этим постом последуют две статьи, в которых будут представлены некоторые базовые и расширенные концепции использования некоторых из лучших пакетов R, таких как tidyr, ggplot2 и Shiny.