在练习中,我尝试使用for循环创建乘法表 . 我是编程新手,R是我学习的第一语言,所以我想知道循环中哪些函数更快更有效 . 目前,我没有使用apply系列的方法,因为我认为理解循环等基本功能非常重要 .
以下是我用来创建multiplicaton表的两种方法:
使用 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
}
}
哪种方式更有效,通常更好用?
谢谢
1 回答
如果你像在你的例子中那样使用函数,那么差异实在是可以忽略不计 . 这是因为每个循环定义只调用一次函数(而不是每次循环迭代!)
我肯定更喜欢
ncol
/nrow
,因为它比dim(x)[1]
更容易阅读 .话虽这么说,如果你只是为了时间,
dim
函数比ncol
/nrow
更快 . 如果查看源代码,可以看到ncol
实现为这意味着
ncol
调用dim
因此稍慢 .如果你真的想用大矩阵保存一些速度,我建议事先创建循环向量,如下所示: