我在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
任何正确方向的帮助都会非常好。
由于
答案 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)