【发布时间】:2018-02-20 18:43:05
【问题描述】:
我再次问这个问题是因为上次我根本不清楚。我有这些数据:
matrix.test = matrix(c(2, 4, 3, 1, 5, 7), nrow=3, ncol=2)
a <- c(1,5)
我想仅对第一行和第三行运行以下公式。所以第一行是:sqrt(sum(matrix.test[1,]-a)^2),第三行是sqrt(sum(matrix.test[3,]-a)^2)。第一个方程的结果是 3,第二个方程的结果是 4。
但是如果我有一个更大的矩阵,我怎么能告诉 R 在特定行上运行方程,而不是一遍又一遍地输入相同的方程到控制台?我不明白如何迭代矩阵的特定行。输出是什么并不重要。它可以是一个矩阵,例如
[,1]
[1,] 3
[2,] 4
或者只是一个向量,例如[1] 3 4
【问题讨论】:
-
你在寻找:
apply(matrix.test[c(1,3), ], 1, function(x) sqrt(sum(x - a)^2)),这里用你想要应用的行替换c(1,3) -
为什么要平方和平方根?您的目标是消除负面影响吗?
-
abs(rowSums(sweep(matrix.test[c(1,3),],2,a))) -
abs(colSums(t(matrix.test[c(1,3),])-a)) -
那么它是你知道的特定行号向量吗?还是有一个特定的规则可以知道要根据哪个计算?