2016-11-27 62 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