R отлично выполняет поэлементное умножение между двумя объектами.
В следующих примерах показано, как выполнять поэлементное умножение между различными объектами в R.
Пример 1. Умножение двух векторов
Следующий код показывает, как выполнить поэлементное умножение с двумя векторами:
#create vectors
a <- c(1, 3, 4, 5)
b <- c(2, 2, 3, 3)
#perform element-wise multiplication
a\*b
[1] 2 6 12 15
Вот как были рассчитаны результаты:
- 1 * 2 = 2
- 3 * 2 = 6
- 4 * 3 = 12
- 5 * 3 = 15
Пример 2. Умножение фрейма данных и вектора
Следующий код показывает, как выполнить поэлементное умножение с фреймом данных и вектором:
#define data frame
df <- data.frame(a=c(1, 3, 4, 5),
b=c(2, 2, 3, 3))
#view data frame
df
a b
1 1 2
2 3 2
3 4 3
4 5 3
#define vector
x <- c(2, 5, 5, 8)
#multiply data frame by vector
df\*x
a b
1 2 4
2 15 10
3 20 15
4 40 24
Пример 3. Умножение двух фреймов данных
Следующий код показывает, как выполнить поэлементное умножение между двумя фреймами данных:
#define data frames
df1 <- data.frame(a=c(1, 3, 4, 5),
b=c(2, 2, 3, 3))
df2 <- data.frame(c=c(6, 2, 2, 2),
d=c(1, 7, 4, 9))
#multiply two data frames
df1\*df2
a b
1 6 2
2 6 14
3 8 12
4 10 27
Обратите внимание, что результирующий фрейм данных имеет тот же размер, что и два фрейма данных, которые мы перемножили.
Также обратите внимание, что мы получим ошибку, если попытаемся умножить два фрейма данных разных размеров:
#define data frames of unequal sizes
df1 <- data.frame(a=c(1, 3, 4, 5),
b=c(2, 2, 3, 3))
df2 <- data.frame(c=c(6, 2, 2),
d=c(1, 7, 4))
#attempt to multiply two data frames
df1\*df2
Error in Ops.data.frame(df1, df2) :
‘\*’ only defined for equally-sized data frames
Дополнительные ресурсы
Как выполнить умножение матриц в R
Как преобразовать матрицу в вектор в R
Как преобразовать столбец фрейма данных в вектор в R