在嵌套for循环之外,在何处初始化矩阵重要吗?

在嵌套for循环之外,在何处初始化矩阵重要吗?,r,for-loop,initialization,R,For Loop,Initialization,我有下面的R代码。我想知道当我把 垫子 请注意,调用函数时返回最后一行 函数中创建的mat矩阵在全局环境中不可用: mat #Error: object 'mat' not found 当您作为R的新用户为循环编写嵌套的时,警报就会响起。通常有更好的方法。嵌套循环的优点是“有意义”,但清晰的逻辑进程在执行中效率非常低。当然也有例外,但你很可能不会很快遇到它们。最好花点时间学习R的编程直觉 关于研究范围的讨论很多: 这个双for循环的意义是什么?你的职能是什么?为什么你不能只做mat[]

我有下面的R代码。我想知道当我把 垫子 请注意,调用函数时返回最后一行

函数中创建的
mat
矩阵在全局环境中不可用:

mat
#Error: object 'mat' not found
当您作为R的新用户为循环编写嵌套的
时,警报就会响起。通常有更好的方法。嵌套循环的优点是“有意义”,但清晰的逻辑进程在执行中效率非常低。当然也有例外,但你很可能不会很快遇到它们。最好花点时间学习R的编程直觉

关于研究范围的讨论很多:


  • 这个双for循环的意义是什么?你的职能是什么?为什么你不能只做
    mat[],而你的
    mat
    作业存在范围界定问题。看见它作为一个对象存在于函数中,但您正试图将其分配给函数外部的
    A
    。@David Arenburg。这是为了自学。最好学习正确的方法。正如@DavidArenburg所说,你可以使用
    rnorm(length(mat))
    进行矢量化,因此你完全不需要双循环。您不妨从一开始就学习编写清晰的可伸缩R。
    mat<-matrix(1:20, ncol=5)
    for(i in 1:4){
      for (j in 1:5){
       mat[i,j]=rnorm(1)
      }
    }
    mat
    
    fun1 <- function(x,y) {
      mat <- matrix(1:20, ncol=5)
      mat[1:x, 1:y] <- rnorm(x*y)
      mat
    }
    
    fun1(2,1)
    #           [,1] [,2] [,3] [,4] [,5]
    #[1,] -0.2883407    5    9   13   17
    #[2,] -0.5290704    6   10   14   18
    #[3,]  3.0000000    7   11   15   19
    #[4,]  4.0000000    8   12   16   20
    
    mat
    #Error: object 'mat' not found