我有两个向量,想在R中创建一个矩阵,从另一个中减去一个。
Vector1 <- c(1,2,3)
Vector2 <- c(2,3,4,5)因此,得到的矩阵将具有三列四行。矩阵将是vector1减去vector2的每个顺序元素。例如,第一行将是vector1减去vector2的第一个元素(即(1-2)、(2-2)、(3-2))。第二行是vector1减去vector2的第二个元素(即(1-3)、(2-3)、(3-3)),依此类推。
实际上,向量要长得多。
发布于 2021-03-24 20:16:10
您可以使用outer
outer(-Vector2, Vector1, "+")
#t(outer(Vector1, Vector2, "-")) #Alternative
# [,1] [,2] [,3]
#[1,] -1 0 1
#[2,] -2 -1 0
#[3,] -3 -2 -1
#[4,] -4 -3 -2发布于 2021-03-24 20:16:15
这样如何:
t(sapply(Vector2, function(x) Vector1-x))
[,1] [,2] [,3]
[1,] -1 0 1
[2,] -2 -1 0
[3,] -3 -2 -1
[4,] -4 -3 -2发布于 2021-03-24 20:16:12
您可以使用matrix([elements], [number of rows], [number of columns])创建矩阵。矩阵的元素可以计算为Vector1 - rep(Vector2, length(Vector1)),其中rep将Vector2的元素重复与‘Vector1’的长度相等的次数,这样您就可以得到您正在寻找的所有差异。
matrix(Vector1 - rep(Vector2, length(Vector1)), length(Vector2), length(Vector1))https://stackoverflow.com/questions/66780726
复制相似问题