2016-11-27 134 views
-1

我真的很新的R..and我試圖將打印(W1)的輸出保存到以下循環的矩陣(1001x4)(或甚至矩陣4004x1)中,但對我來說這是不可能的。我試圖在打印後(w1)b[,i]<-1/n^2*(sum1+n+sum2)將w1保存到矩陣中,但它只保存最後4個輸出。我的代碼是:循環R:如何存儲輸出?

n=4 
for(a in seq(0,1,0.001)){ 
for(i in 1:n){ 
sum1<-0 
sum2<-0 
for(j in 1:n){ 
    if(j>i){ 
    sum1<-sum1+(n/j)^a 
    } 
    else if(j<i){ 

    sum2<-sum2-(n/i)^a 


    } 

} 

w1<-1/n^2*(sum1+n+sum2) 

print(w1) 
#b[,i]<-1/n^2*(sum1+n+sum2) 
} 

} 

在此先感謝您的幫助!阿納斯塔西婭。

+0

如果你沒有在所有的for循環中使用一個賦值的LHS索引,那麼每次循環都會覆蓋這些值。這似乎是R新手中很常見的錯誤,可能是因爲SAS和SPSS語言具有隱式行索引,並且人們在轉移到其他語言時不明白這一事實。我懷疑來自「真正的」編程語言的人面臨同樣的認知障礙。 –

回答

0

它只存儲最後4個輸出,因爲您使用的是i作爲索引(它只會是1到4)。

如果要存儲所有值,則必須將新值附加到當前向量。你可以這樣做:

vec <- c() # Create a new empty vector before the loop 
# After print(w1) add 
vec <- c(vec, w1) # This will append the new value (w1) to the vector