Векторы
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”)]