Это старая версия (1.61) ЯзыкR.

Содержание

Язык R

Общее описание языка R

Простой и полезный язык для статистики, машинного обучения и DataMining.

История создания

Основы

Конвенции именования

Программа «Hello, world!»

 #это однострочный комментарий
 HWstr <- "Hello, world!"
 print(HWstr)

 #в R нет многострочных комментариев
 "Hello, world!" -> HWStr #стрелочка работает в обе стороны
 HWstr #так удобнее всего, наверное

 (HWstr <- "Hello, world!") #иногда так удобно

R как калькулятор

Все имеющиеся т.н. "статистические пакеты" можно условно разделить на три категории:
  • библиотеки высокоуровневых ЯП (Seismic UNIX в Си, Pandas в Python)
  • "взбесившиеся" научные калькуляторы: помимо R к ним относятся GNU Octave, Gretl (GNU Regression, Econometrics and Times-series Library), GAUSS.
  • "взбесившиеся" табличные процессоры: работа с ними напоминает MS Excel, у которого оставили только VBA-редактор(например, SAS Base -- фактический стандарт в банковской и страховой индустриях, STATA или Statistica) или существенно урезали возможности редактирования редактирования ячеек и "кнопочные" функции (SPSS и SAS Enterprise Guide).

R можно использовать как хороший научный и статистический калькулятор.


 2 + 2 #должен вернуть 4, но кто ж его знает

 a <- 2
 b <- 3
 a + b #скорее всего вернет 5, но не уверен

 d <- 3
 d <- c + 5
 d #тут я просто теряюсь в догадках, но, может быть, вернет 8

 #совсем просто: значение функции Гомпертца, для 
 a <- 0.993 #верхняя ассимптота
 b <- -2.63 #смещение по t
 d <- -1.257 #масштабированием по t
 t <- 6.2567 #момент времени
 Gompertz.Value <- a * exp(b * exp(d * t))
 Gompertz.Value #любому дураку понятно, что значение будет равно 0.9919975

Функции, ветвления и циклы

Синтаксис любой функции в R выглядит следующим образом:
 function_name <- function(<argument_1>, <argument_2>, ...){
  #code
  <return(value_to_return)>
 }

Можно использовать упрощенный синтаксис (что делать крайне не советую -- АтрашкевичАндрей)

 function_name <- function(<argument_1>, <argument_2>, ...) #code here

В этом случае можно писать код только в строчку после закрывающей скобки.


 #квадрат числа
 Func.One <- function(x) x^2
 Func.One(2.75) #вернет 7.5625

 #экспонента числа минус его куб
 Func.Two <- function(x){
  result <- exp(x)
  result <- result - x**3 #степень можно записать и как "^", и как "**"
  return(result)
 }
 Func.Two(6.5) #вернет 390.5166

Вычисление факториала

Синтаксис цикла for:
 for(iterator_name in start_value:stop_value){
  #code
 }
Если необходим шаг итерации, то запись несколько отличается:
 for(itarator_name in seq(start_value, stop_value, by = by_value)){
  #code
 }

 #инкрементное решение
 Func.Factorail.Iter <- function(n){
  #знак ";" обязательно нужен только в таких случаях записи более одной команды в строчку
  stopifnot(n > 0); factorial <- 1
  for(i in 1:n){
   factorial <- factorial * i
  }
  return(factorial)
 }
 Func.Factorail.Iter(5) #должен вернуть 120

Синтаксис ветвления:
 if(condition_1){
  #code if condition_1 is TRUE
 }
 else if(condition_2){
  #code if condition_2 is TRUE
 }
 ...
 else if(condition_N){
  #code if condition_N is TRUE
 }
 else{
  #code if condition_1 ... condition_N are all FALSE
 }

 #рекурсивное решение
 Func.Factorial.Recur <- function(n){
  stopifnot(n >= 0)
  if(n == 0){
   return(1)
  }
  else{
   return(n * Func.Factorial.Recur(n - 1))
  }
 } 
 Func.Factorial.Recur(4) #должен вернуть 24

Числа Фибоначчи

 #F = {0, 0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...}
 Func.Fibonacci <- function(n){
  stopifnot(n > 0)
  if(n == 1){
   return(0)
  }
  else if(n == 2){ #обратите внимание на пробел между else и if
   return(1)
  }
  else{
   return(Func.Fibonacci(n - 1) + Func.Fibonacci(n - 2))
  }
 }
 Func.Fibonacci(8) #вернет 13

Использование языка

Литература

1 R Language Definition. Version 3.1.2 (2014-10-31) DRAFT / R Core Team - 2014 - 60 p.
http://cran.r-project.org/doc/manuals/R-lang.pdf
  1. Venables W. N., Smith and the R Core Team D. M. An Introduction to R. Notes on R: A Programming Environment for Data Analysis and Graphics. Version 3.1.2 (2014-10-31) / W. N. Venables, D. M. Smith and the R Core Team - 2014 - 105 p. : http://cran.r-project.org/doc/manuals/R-intro.pdf
  2. Paradis E. R for beginners / Paradis E. - 2005 - 72 p. : http://cran.r-project.org/doc/contrib/Paradis-rdebuts_en.pdf