楼主: n7zhang
2540 5

R编程求助 [推广有奖]

  • 0关注
  • 0粉丝

大专生

50%

还不是VIP/贵宾

-

威望
0
论坛币
61 个
通用积分
0
学术水平
2 点
热心指数
2 点
信用等级
1 点
经验
2478 点
帖子
53
精华
0
在线时间
59 小时
注册时间
2009-1-7
最后登录
2015-12-14

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
在下需要编写段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
}

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

扫码加我 拉你入群

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

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

关键词:R编程 Threshold for循环 hold RES 求助

沙发
qoiqpwqr 发表于 2011-1-25 23:26:48 |只看作者 |坛友微信交流群
不要用循环,速度太慢了。
a[a < 0] <- 0

使用道具

藤椅
颜佳 发表于 2011-1-25 23:47:56 |只看作者 |坛友微信交流群
2000×2000×280不是3维的吗?为啥叫矩阵?2楼的方法在R里面根本用不了吧,还是用循环的方法,虽然需要很久。

使用道具

板凳
n7zhang 发表于 2011-1-25 23:51:48 |只看作者 |坛友微信交流群
2# qoiqpwqr 谢谢了,这行代码大大缩短了我的程序运行时间。!

使用道具

报纸
n7zhang 发表于 2011-1-26 00:39:45 |只看作者 |坛友微信交流群
3# 颜佳 在下已经验证,在三维矩阵中这个命令可以使用
您可以看看以下代码
tarr<-array(rnorm(12),dim=c(2,2,3))
tarr[abs(tarr)<1]<-0

使用道具

地板
qoiqpwqr 发表于 2011-1-26 02:04:19 |只看作者 |坛友微信交流群
颜佳 发表于 2011-1-25 23:47
2000×2000×280不是3维的吗?为啥叫矩阵?2楼的方法在R里面根本用不了吧,还是用循环的方法,虽然需要很久。
能不用循环就不要用循环。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 15:17