如何使用循环和应用函数对R中的矩阵元素进行平方

时间:2015-02-11 23:04:25

标签: r matrix

我在R中制作了一个3x3矩阵。我正在要求对矩阵中的所有数字进行平方。首先使用循环,然后使用apply函数。我已经完成了以下工作。

myMatrix = matrix ( c(1,2,3,4,5,6,7,8,9), nrow=3, ncol=3)

所以这给了我我的矩阵。然后我用它来解决它们的问题

 myMatrix * myMatrix ##don't know how to make a loop to do this

最后我尝试使用apply()函数做同样的事情

  apply(myMatrix, c(1,2), exp) ##this gave me numbers that didnt look correct

任何正确方向的帮助都会非常好。

由于

2 个答案:

答案 0 :(得分:3)

接受的答案非常低效;相反,人们应该意识到“^”运算符以元素方式工作并使用:

sqrdMtx <- myMatrix^2

当参数是矩阵时,“^”运算符不是矩阵幂。为此你需要在pkg:expm。

中使用matpow

答案 1 :(得分:1)

正如一些评论所提到的,这些并不是平衡矩阵的最佳方法。但既然你问过......

使用循环:

myMatrix = matrix ( c(1,2,3,4,5,6,7,8,9), nrow=3, ncol=3)

# empty matrix for the results
squaredMatrix = matrix(nrow=3, ncol=3)

for(i in 1:nrow(myMatrix)) {
  for(j in 1:ncol(myMatrix)) {

    squaredMatrix[i,j] = myMatrix[i,j]^2 

  }
}

编辑:

如下面的评论中所述,您还可以使用单个循环:

squaredMatrix = matrix(nrow=3, ncol=3)
for (i in 1:length(myMatrix)) {
  squaredMatrix[i] <- myMatrix[i]^2
}

使用apply函数:

squaredMatrix = apply(myMatrix, c(1,2), function(x) x^2)