在函数内的循环内定义变量

Defining a variable inside a loop inside a function

所以我有一个任务,如果观察到的变量有测量误差,我必须证明回归系数收敛到某个值。这个想法是根据观察的数量以及变量的标准偏差来显示收敛。

我构建了以下函数,该函数应根据观察次数创建一个具有回归系数的矩阵。在后面的步骤中,我想在情节中展示它,然后在闪亮的网络应用程序中展示它。

函数是:

Deviation <- function(N, sd_v = 1, sd_u = 1, sd_w = 1){
  b_1 <- 1
  b_2 <- 2
  for ( j in length(1:N)){
    v <- rnorm(j, mean = 0, sd_v)
    u <- rnorm(j, mean = 0, sd_u)
    w <- rnorm(j, mean = 0, sd_w)
    X <- u + w
    Y <- b_1 + b_2 * X + v
    Reg <- lm(Y~X)
    if (j==1) {
      Coeffs <- matrix(Reg$coefficients)
    } else {
      Coeffs <- rbind(Coeffs, Reg$coefficients)  
    }
  }
  Coeffs <- as.data.frame(Coeffs)
  return(Coeffs)  
}
Deviation(100)

我总是收到未定义变量 Coeffs 的错误...

提前致谢!

正如讨论中所指出的,一种可能的解决方案是将 length(1:N) 更改为简单的 1:N,如下所示。这对我有用。

Deviation <- function(N, sd_v = 1, sd_u = 1, sd_w = 1){
  b_1 <- 1
  b_2 <- 2
  for ( j in 1:N){
    v <- rnorm(j, mean = 0, sd_v)
    u <- rnorm(j, mean = 0, sd_u)
    w <- rnorm(j, mean = 0, sd_w)
    X <- u + w
    Y <- b_1 + b_2 * X + v
    Reg <- lm(Y~X)
    if (j==1) {
      Coeffs <- matrix(Reg$coefficients)
    } else {
      Coeffs <- rbind(Coeffs, Reg$coefficients)  
    }
  }
  Coeffs <- as.data.frame(Coeffs)
  return(Coeffs)  
}

其次是...

Deviation(100)