Главная » Статьи » Студентам » Бизнес-аналитика

Векторы в R

 

Векторы в R

Понятие вектора в языке программирования R

Любой объект, который содержит данные называется data structureструктурой данных.

Векторэто набор чисел, как правило, небольших размеров. Это – самый простой тип структуры данных в R. Даже одно число представляет собой вектор длиной в один элемент.

Вектор – поименованный одномерный объект, содержащий набор однотипных элементов.

 

Создание векторов

Способ 1 – с()

Для создания векторов небольшой длины используется функция конкатенации c() (от "concatenate" – объединять, связывать).

В качестве аргументов этой функции через запятую перечисляют объединяемые в вектор значения. Например, зададим вектор z со значениями 1.1, 9, 3.14:

> z<-c(1.1,9,3.14)
> z
[1] 1.10 9.00 3.14

Способ 2 – scan()

Применяется функция scan(), которая "считывает" последовательно вводимые с клавиатуры значения. При этом выполнение команды scan завершают введением пустой строки

> X <- scan()
1: 2
2: 1
3: 5
4: 3
5: 6
6: 
Read 5 items
> X
[1] 2 1 5 3 6

Заметьте, что X – заглавная буква. Если использовать прописную (х), то программа выдаст ошибку либо величину x, которая была ранее определена в листинге кода.

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

 

Способ 3 – seq()

При необходимости использования набора последовательных чисел, например, от 1 до 7, можно воспользоваться функцией seq()

> s <- seq(1,7)
[1] 1 2 3 4 5 6 7

или

> S<-1:7
[1] 1 2 3 4 5 6 7

Более того, функция seq() может устанавливать последовательность числе с шагом приращения:

> my.vector<- seq(from = 1, to = 7, by = 1.5)
> my.vector
[1] 1.0 2.5 4.0 5.5 7.0

 

Операции над векторами

Векторы можно комбинировать, чтобы получить новый вектор.

> my.vector1<-c(X,234,X)
[1]   2   1   5   3   6 234   2   1   5   3   6

Векторы можно объединять в один, как показано ниже

> v1 <-c(1, 2, 3)
> v2 <-c(4, 5, 6)
> V <-c(v1, v2)
> V
[1] 1 2 3 4 5 6

Векторы могут участвовать в арифметических операциях:

> my.vector1*2+100
 [1] 104 102 110 106 112 568 104 102 110 106 112

Каждый элемент вектора с именем my.vector1 сначала умножается на 2, а после к каждому из них прибавляется 100.

 

Другими распространенными арифметическими операциями являются

+,  -,   /,   и   ^

Чтобы найти квадратный корень можно использовать функцию

sqrt()   или   ^(1/2),   или   ^0.5

Найдем корень вектора my.vector1, элементы которого умножены на 2 и увеличены на 12.

my.sqrt<-sqrt(my.vector1*2+12)
[1]  4.000 3.7417 4.6904 4.2426 4.899 21.9089 4.000 3.7417
[9]  4.6904  4.2426  4.899

Обратите внимание, что, когда программа выводит на экран ответ, в квадратных скобках указывается порядковый номер в наборе элементов.

 

Осуществим операцию деления над векторами:

my.sqrt/my.vector1
2.00000000 3.74165739 0.93808315 1.41421356 0.81649658 0.09362779 2.00000000  3.74165739 0.93808315 1.41421356 0.81649658
Посмотрите на сумму двух векторов разной длины и полученный ответ:
> c(1,2,3,4)+c(0,10)
[1]  1 12  3 14

Как видно, числа из меньшего вектора (2-го слагаемого) были добавлены к первым двум числам большего вектора (1-го слагаемого), а потом – к оставшимся двум числам в нем. Таким образом реализуется метод Recycling.

Можно проверить, есть ли элементы вектора меньше или больше некоторого значения, например:

> num_vect<-c(0.5,55,-10,6)
> num_vect<1
[1]  TRUE FALSE  TRUE FALSE

Вектор может быть текстовым (character)

> character.vector<-c("Business", "Analytics")
 [1] "Business"  "Analytics"

Если вы хотите объединить элементы текстового вектора в одну строку, то воспользуйтесь paste(), в котором аргумент collapse указывает программе, что между элементами должен быть один пробел.

> paste(character.vector, collapse=" ")
[1] "Business Analytics"

Текстовые векторы тоже комбинируются. Допускается включение в вектор отдельных элементов

> character.vector<-c("Your name", "is", "Business", "Analyst")
[1] "Your name" "is"  "Business"  "Analyst"

 
> paste(character.vector, collapse=" ")
[1] "Your name is Business Analyst"

 

paste() может объединять элементы множества текстовых векторов. В самом простом случае объединяются два текстовых вектора, длина которых равняется 1, при этом аргумент sep отвечает за символ, стоящий между объединенными элементами

> paste("It's", "interesting", sep=" ")
[1] "It's interesting"

Если объединять текстовый вектор с числовым, программа преобразует все значения в текстовые:

> text.vect <- c("a", "b", "c")
> num.vect<-c(1,2,3)
> new.vect<-c(text.vect, num.vect)
> new.vect
[1] "a" "b" "c" "1" "2" "3"

Чтобы проверить, что new.vect является текстовым применим mode()

> mode(new.vect)
[1] "character"

Далее объединим числовой и текстовый векторы одинаковой длины

> paste(1:3, c("Business Analytics", "Simulation","Economic Cybernetics"), sep="-") 
"1-Business Analytics"  "2-Simulation"  "3-Economic Cybernetics"

Для векторов разной длины срабатывает “Recycling”

paste(LETTERS, 1:4, sep = "-")
"A-1" "B-2" "C-3" "D-4" "E-1" "F-2" "G-3" "H-4" 
"I-1" "J-2" "K-3" "L-4" "M-1" "N-2" "O-3" "P-4" 
"Q-1" "R-2" "S-3" "T-4" "U-1" "V-2" "W-3" "X-4" 
"Y-1" "Z-2"

Чтобы обратится к конкретному элементу необходимо указать имя вектора и индекс этого элемента в квадратных скобках:

> y <- c(5, 3, 2, 6, 1)
> y[4]
[1] 6

Из примера выше видно, что 4-й элемент вектора y равен 6. Ниже показано, что можно брать конкретные элементы из векторов и производить над ними операции:

> y1<-c(1,2,3)
> y[4]/y1[2]
[1] 3

Вывод нескольких последовательных значений, например, 2-го, 3-го и 4-го элементов вектора y, выполняется следующим образом

> y[2:4]
[1] 3 2 6

Чтобы выбрать конкретные элементы вектора, необходимо выполнить команду

> y[c(1,5)]
[1] 5 1

Если при выводе требуется исключить некоторые элементы, то в предыдущей команде надо поставить минус «-»

> y[-c(1,5)]
[1] 3 2 6

Поддерживается также вывод по критерию. Например, выберем все значения больше 3

> y[y>3]
[1] 5 6

Благодаря индексам можно вносить исправления в вектор. Так, второй элемент вектора должен быть равным 4

> y[2]<-4
> y
[1] 5 4 2 6 1

Сортировка элементов вектора по возрастанию или убыванию осуществляется с помощью sort(). При этом аргументом, отвечающим за порядок сортировки, выступает decreasing, что означает «по убыванию» или «убывающий».

> sort(y,decreasing = TRUE)
[1] 6 5 4 2 1

 
> sort(y,decreasing = FALSE)
[1] 1 2 4 5 6

 

Еще раз о создании векторов. Помимо числовых и текстовых можно создавать логические векторы

> vl<-c(TRUE, FALSE)
> vl1<-c(T,F)
> vl1
[1]  TRUE FALSE

Функция class() также используется для проверки типа вектора, при этом обратите внимание на результаты

> class(vi)
[1] "integer"

 
> mode(vi)
[1] "numeric"

 

Функция sum() вычисляет сумму элементов вектора

> sum(y)
[1] 18

mean()вычисляет среднее значение элементов вектора

> mean(y)
[1] 3.6

Стандартное отклонениеsd()

> sd(y)
[1] 2.073644

 

© Источники:

Peter Dalgaard (2008). ‘Introductory Statistics with R’. Second Edition, Springer Science e+Business Media, LLC. 363 p.

r-analytics.blogspot.co.ke/

r-bloggers.com/

 

Категория: Бизнес-аналитика | Добавил: kvn2us (25.03.2017) | Автор: Кравченко В.Н.
Просмотров: 106 | Теги: вектор, R-Studio
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]