gpt4 book ai didi

r - 矩阵和向量的元素乘积

转载 作者:行者123 更新时间:2023-12-01 08:14:01 25 4
gpt4 key购买 nike

我需要一个逐元素运算,而不是通常的矩阵乘法。以下工作正常:

# this works
Bmat <- structure(c(3L, 3L, 10L, 3L, 4L, 10L, 5L, 8L, 8L, 8L, 3L, 8L, 8L, 2L, 6L, 10L, 2L, 8L, 3L, 9L), .Dim = c(10L, 2L))
yvec <- c(2, 2, 2, 2, 2, 2, 2, 2, 2, 2)
Bmat * yvec
# [,1] [,2]
# [1,] 6 6
# [2,] 6 16
# [3,] 20 16
# [4,] 6 4
# [5,] 8 12
# [6,] 20 20
# [7,] 10 4
# [8,] 16 16
# [9,] 16 6
# [10,] 16 18

然而,以下失败:

# this fails
Amat <- structure(c(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0), .Dim = c(10L, 2L))
xvec <- structure(c(1.83475682418716, 1.48154883122634, 1, 1, 1, 1, 1, 1, 1, 1), .Dim = c(10L, 1L))
Amat * xvec
#Fehler in Amat * xvec : nicht passende Arrays

这是为什么呢?它与 Bmat 是整数矩阵有关吗?我怎样才能使第二个代码起作用?

最佳答案

class(xvec)
[1] "matrix"

dim(xvec)
[1] 10 1

class(Amat)
[1] "matrix"

dim(Amat)
[1] 10 2

只有当两个矩阵具有相同的维度时,才能在两个矩阵之间进行逐元素乘法。因此,解决方案是将 xvec 转换为向量。尝试

Amat * c(xvec)
#OR
Amat * as.vector(xvec)

关于r - 矩阵和向量的元素乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43283459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com