【发布时间】:2017-08-11 17:41:54
【问题描述】:
在一个练习尝试中,我尝试使用 for 循环创建一个乘法表。我是编程新手,R 是我学习的第一门语言,所以我想知道循环中的哪些函数更快、更高效。目前,我没有使用 apply 系列的方法,因为我认为了解循环等基本功能很重要。
以下是我用来创建乘法表的两种方法:
使用dim()函数:
mtx <- matrix(nrow=10, ncol=10)
for(i in 1:dim(mtx)[1]){
for(j in 1:dim(mtx)[2]){
mtx[i,j] <- i*j
}
}
使用ncol/nrow()函数:
mtx <- matrix(nrow=10, ncol=10)
for(i in 1:ncol(mtx)){
for(j in 1:nrow(mtx)){
mtx[i,j] <- i*j
}
}
哪种方式更有效,通常更好用?
谢谢
【问题讨论】:
-
你试过计时吗?另外,您是否查看过
ncol的代码? -
您好 A5C1D2H2I1M1N2O1R2T1 ,感谢您的快速回复。我尝试在控制台中输入不带括号的 ncol,发现它使用了
dim(x)[2L]。这是否意味着这两个功能在速度方面是相同的? -
我尝试使用具有 10000 列/行的矩阵来计时这两个函数。 'ncol()' 方法需要很长时间才能运行,或者我的计算机有问题。
-
如果您对效率感兴趣,您将注意力集中在代码的错误部分。您应该学习分析代码。当然,你不应该为此使用循环。
-
我会使用
(1:rows) %*% t(1:cols)
标签: r performance loops for-loop