Главная » Статьи » Студентам » Бизнес-аналитика |
Векторы в 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.
| |
Категория: Бизнес-аналитика | Добавил: kvn2us (25.03.2017) | | |
Просмотров: 6128 | |