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