Векторы

R — векторный язык. Вы можете думать о векторе как о строке или столбце числовых данных, символьных данных или логических данных. Список чисел {1,2,3,4,5}, например, может быть вектором. В отличие от большинства других языков программирования, R позволяет применять функции ко всему вектору за одну операцию без необходимости явного цикла.

Сначала присвойте значения 1:5 вектору с именем x:

x <-1:5
x
[1] 1 2 3 4 5

Затем добавьте значение 2 к каждому элементу вектора x:

x + 2
[1] 3 4 5 6 7

Вы также можете добавить один вектор к другому. Чтобы добавить значения 6:10 поэлементно к x, вы делаете следующее:

x +6:10
[1] 7 9 11 13 15

Создать вектор

В R вы создаете вектор с помощью функции объединения c(). Вы помещаете элементы вектора, разделенные запятой, между скобками

numeric_vector <- c(1, 2, 3)
character_vector <- c("a", "b", "c")

Поскольку вектор должен иметь элементы одного типа, эта функция попытается привести элементы к одному типу, если они разные.

Приведение осуществляется от младших типов к более высоким, от логического к целочисленному, к двойному к символьному.

x <- c(1, 5, 4, 9, 0)
typeof(x)
[1] "double"
length(x)
[1] 5
x <- c(1, 5.4, TRUE, "hello")
x
[1] "1"     "5.4"   "TRUE"  "hello"
typeof(x)
[1] "character"

Если мы хотим создать вектор последовательных чисел, очень полезен оператор :.

x <- 1:7; 
x
[1] 1 2 3 4 5 6 7
y <- 2:-2; 
y
[1]  2  1  0 -1 -2

С помощью функции seq() можно создавать более сложные последовательности, например, определять количество точек в интервале или размер шага.

> seq(1, 3, by=0.2)          # specify step size
[1] 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8 3.0
> seq(1, 5, length.out=4)    # specify length of the vector
[1] 1.000000 2.333333 3.666667 5.000000

Как получить доступ к элементам вектора?

Доступ к элементам вектора можно получить тремя различными способами:

  • Использование целочисленного вектора в качестве индекса
  • Использование логического вектора в качестве индекса
  • Используя вектор символов как indez

Использование целочисленного вектора в качестве индекса

Индекс вектора в R начинается с 1, в отличие от большинства языков программирования, где индекс начинается с 0.

Мы можем использовать вектор целых чисел в качестве индекса для доступа к определенным элементам.

Мы также можем использовать отрицательные целые числа, чтобы вернуть все элементы, кроме указанных.

x
[1]  0  2  4  6  8 10
x[3]           # access 3rd element
[1] 4
x[c(2, 4)]     # access 2nd and 4th element
[1] 2 6
x[2:4]     # access from 2nd to 4th element
[1] 2 4 6
x[-1]          # access all but 1st element
[1]  2  4  6  8 10
x[c(2, -4)]    # cannot mix positive and negative integers
Error in x[c(2, -4)] : only 0's may be mixed with negative subscripts
x[c(2.4, 3.54)]    # real numbers are truncated to integers
[1] 2 4

Использование логического вектора в качестве индекса

Когда мы используем логический вектор для индексации, возвращается позиция, в которой логический вектор равен TRUE.

Эта полезная функция помогает нам фильтровать вектор, как показано ниже.

x[c(TRUE, FALSE, FALSE, TRUE)]
[1] -3  3
x[x < 0]  # filtering vectors based on conditions
[1] -3 -1
x[x > 0]
[1] 3

В приведенном выше примере выражение x>0 даст логический вектор (FALSE, FALSE, FALSE, TRUE), который затем используется для индексации.

Использование вектора символов в качестве индекса

Этот тип индексации полезен при работе с именованными векторами. Мы можем назвать каждый элемент вектора.

x <- c("first"=3, "second"=0, "third"=9)
names(x)
[1] "first"  "second" "third" 
x["second"]
second 
0 
x[c("first", "third")]
first third 
3     9

Выбор путем сравнения

c(4, 5, 6) > 5
[1] FALSE FALSE TRUE

Как изменить вектор в R?

Мы можем изменить вектор, используя оператор присваивания.

Мы можем использовать методы, описанные выше, для доступа к определенным элементам и их модификации.

Если мы хотим обрезать элементы, мы можем использовать переназначения.

x
[1] -3 -2 -1  0  1  2
x[2] <- 0; x        # modify 2nd element
[1] -3  0 -1  0  1  2
x[x<0] <- 5; x   # modify elements less than 0
[1] 5 0 5 0 1 2
x <- x[1:4]; x      # truncate x to first 4 elements
[1] 5 0 5 0

Как удалить вектор?

Мы можем удалить вектор, просто присвоив ему NULL.

x
[1] -3 -2 -1  0  1  2
x <- NULL
x
NULL
x[4]
NULL

Операции в векторе R

Объединение векторов в R

Чтобы объединить два вектора в R, мы создадим два новых вектора «n» и «s». Затем мы создадим еще один вектор, который объединит эти два, используя c(n,s) следующим образом:

Например:

n = c(1, 2, 3, 4)
s = c(“Hadoop”, “Spark”, “HIVE”, “Flink”)
c(n,s)
[1] '1' '2' '3' '4' 'Hadoop' 'Spark' 'HIVE' 'Flink'

Арифметические операции

Арифметические операции над векторами могут выполняться поэлементно.

Например:

Предположим, у нас есть два вектора a и b:

a <- c (1, 3)
b <- c (1, 3)
a + b #Addition
[1] 2 6
a — b #Subtraction
[1] 0 0
a / b #Division
[1] 1 1
a %% b #Remainder Operation
[1] 0 0

Повторяющийся индекс

Вектор индекса допускает повторяющиеся значения. Следовательно, следующее извлекает член дважды за одну операцию.

Например:

s = c(“aa”, “bb”, “cc”, “dd”, “ee”)
s[c(2,3,3)]
[1] ‘bb’ ‘cc’ ‘cc’

Именованные элементы векторов

Сначала мы создаем наш вектор символов:

v = c(“Hadoop”, “Spark”)
v

Затем мы назовем первый элемент вектора «Первый», а второй элемент — «Второй».

names(v) = c(“First”, “Second”)
v

Мы извлекаем первый элемент по его имени следующим образом:

v[“First”]

Мы также можем изменить порядок, используя вектор индекса символьной строки:

v[c(“Second”, “First”)]