全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2836 5
2011-01-25
在下需要编写段R 代码, 是用于一个2000*2000*280的矩阵,目的是要将矩阵中绝对值小于threshold的量换成0.在下自己的是三重for循环
thrhd<-function(a,th){

for(j in 1:dim(a)[2]){

for(k in 1:dim(a)[1]){

for(i in 1:dim(a)[3]){

        if(abs(a[k,j,i])<th) a[k,j,i]=0

        }

}

}

a
}

这段代码运行需要太久时间,请问是否有比较高效的方法?谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2011-1-25 23:26:48
不要用循环,速度太慢了。
a[a < 0] <- 0
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-1-25 23:47:56
2000×2000×280不是3维的吗?为啥叫矩阵?2楼的方法在R里面根本用不了吧,还是用循环的方法,虽然需要很久。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-1-25 23:51:48
2# qoiqpwqr 谢谢了,这行代码大大缩短了我的程序运行时间。!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-1-26 00:39:45
3# 颜佳 在下已经验证,在三维矩阵中这个命令可以使用
您可以看看以下代码
tarr<-array(rnorm(12),dim=c(2,2,3))
tarr[abs(tarr)<1]<-0
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-1-26 02:04:19
颜佳 发表于 2011-1-25 23:47
2000×2000×280不是3维的吗?为啥叫矩阵?2楼的方法在R里面根本用不了吧,还是用循环的方法,虽然需要很久。
能不用循环就不要用循环。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群