【问题标题】:Loop in R: how to store the output?R中的循环:如何存储输出?
【发布时间】:2016-11-27 22:22:08
【问题描述】:

我真的是 R.. 的新手,我正在尝试将 print(w1) 的输出保存到以下循环的矩阵 (1001x4)(甚至是矩阵 4004x1)中,但对我来说这是不可能的.我试图在 print(w1)b[,i]<-1/n^2*(sum1+n+sum2) 之后将 w1 保存到矩阵中,但它只保存最后 4 个输出。我的代码是:

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)
 }

}

提前感谢您的帮助!阿纳斯塔西娅。

【问题讨论】:

  • 如果您不在所有 for 循环内的分配的 LHS 上使用索引,您将在每次循环中覆盖这些值。这似乎是 R 新手中非常常见的错误,可能是因为 SAS 和 SPSS 语言具有隐式行索引,当人们转向其他语言时,他们不理解这一事实。我怀疑来自“真实”编程语言的人会面临同样的认知障碍。

标签: r for-loop matrix


【解决方案1】:

它只存储最后 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

【讨论】:

    猜你喜欢
    • 2017-02-01
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多