我创建了两个矩阵,如下所示:
A = c(1,2,3)
B = c(2,4,6)
c = as.matrix(c(3,6,9))
z = as.matrix(cbind(A, B))
现在,我想取矩阵c并将其逐行减去,例如1-3 = -2&2-3 = -1对R编程有一个很好的了解,我想创建一个for循环。请您所有的答案都应该改善我的生活。
for (i in 1:nrow(z))# for the rows in matrix z
for (j in 1:nrow(c)) # for the rows in matrix c
{
sub = matrix(NA, 3,2) # make a placeholder
sub [i,]= z[i,]-c[j,] # i am not sure whether this right
return((sub))
}
我收到以下错误:
Error: no function to return from, jumping to top level
我相信我的for循环是错误的,任何人都可以帮忙。目的是了解有关R编程的更多信息。谢谢
如果您以这种方式编写循环:
sub = matrix(NA, 3,2) # make a placeholder
for (i in 1:nrow(z))# for the rows in matrix z
for (j in 1:nrow(c)) # for the rows in matrix c
{
sub [i,]= z[i,]-c[j,] # i am not sure whether this right
}
sub
它会毫无错误地结束,但是您会得到:
[,1] [,2]
[1,] -8 -7
[2,] -7 -5
[3,] -6 -3
这是不是你所期望的......因为最后Ĵ总是3所以你更换sub[i,]
的z[i,]-c[3,]
是z[i,]-9
现在,如果将循环替换为:
for (i in 1:nrow(z)) #(nrow(z)==nrow(c))
{
sub [i,]= z[i,]-c[i,]
}
那么您将拥有:
[,1] [,2]
[1,] -2 -1
[2,] -4 -2
[3,] -6 -3
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句