[英]R:Save output for assigned variable in the nested for loop as a matrix
我有一個使用兩個矩陣M1和M2的嵌套for循環,在打印時可以得到想要的輸出。 由於我在for循環中分配了另一個變量“ y”來獲取輸出,因此我不確定如何將最終輸出保存在矩陣中。 這些是我的密碼
A<-c('a','a','a','b','b','b','c','c','c')
B<-c('a','b','c','a','b','c','a','b','c')
C<-c(0,1,2,1,0,3,2,3,0)
D<-data.frame(A,B,C)
library("reshape2")
M1<-acast(D, list(names(D)[1], names(D)[2]))
M2<-matrix(c(1000,800,500),nrow=3,ncol=1)
for(i in 1:3)
{
for(j in 1:3)
{
y=0
for(k in 1:3)
{
if(M1[i,k]<M1[i,j])
{
y=y+M2[k,1]
}
}
y=y-M2[i,1]
if(y<0)
{
print(0)
}
else
print(y)
}
}
我試圖預先定義輸出變量,然后分配給它。
output<-matrix(0,9,1)
for(i in 1:3)
{
for(j in 1:3)
{
y=0
for(k in 1:3)
{
if(M1[i,k]<M1[i,j])
{
y=y+M2[k,1]
}
}
y=y-M2[i,1]
if(y<0)
{
print(0)
}
else
output[y]<-y
}
}
output
當我這樣分配時,我得到了多個NA值,零和一些輸出值。
我是for循環的新手。 任何幫助將不勝感激。謝謝!
我可以通過以下代碼獲得所需的矩陣
output<-matrix(0,9,1)
for(i in 1:3)
{
for(j in 1:3)
{
y=0
for(k in 1:3)
{
if(M1[i,k]<M1[i,j])
{
y=y+M2[k,1]
}
}
y=y-M2[i,1]
if(y<0)
{
output[j+(3*(i-1)),1]<-0
}
else
output[j+(3*(i-1)),1]<-y
}
}
View(output)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.