当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 7 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 一个R语言的循环变单行问题 跪求各位大虾出手相助
帖子发表于 : 2010-08-08 12:07 
头像

注册: 2010-03-29 21:25
帖子: 317
地址: 顽强地活在封建的天空下
送出感谢: 2
接收感谢: 0 次
各位大虾好,
今天在下遇到一个非常棘手的R语言的问题,想请教一下。
我需要比较计算一组声学数据,这组数据个头儿可能有些大,一共是50个,我要计算其中每两个的差异性。也就是说最少需要计算50*49/2次, 而且一次计算需要的时间就很长了,大概十分钟,如果算上两千多次,那简直要等死人。
所以我就编了一个循环,可是据说R最讨厌的就是循环运算了,会导致速度更慢。后来,我有听说perl可以把一个循环搞成很多单行,这样就可以使R的运算时间大大减少,因为无数单行对于R来说要比一个循环快很多。
论坛里的大侠们很多是统计学专业的,所以想请教一下可不可以帮我把这个循环改成所谓的很多单行命令呢?
在下千里迢迢赶来论坛,但求有大虾出手相助,万分感激。

具体的语言过程如下:
> t2<-readWave("t2") #给t2赋值。
> t3<-readWave("t3")
> t5<-readWave("t5") #这里只列出了四个样本,一共有50个。
> a<-c(t2,t3,t5)
> b<-c(t2,t3,t5)
> n<-1
> c<-(1:9)
> c
[1] 1 2 3 4 5 6 7 8 9
> for(i in a){for(j in b){c[n]<-diffwave(i,j,f=44100);n<-n+1}} #这就是在下编的循环,diffwave()就是用来计算两个声音文件差异性的函数,最后结果是一个数值。
> c
[1] 0.00000000 0.09743880 0.08595923 0.09743880 0.00000000 0.02344093 0.08595923
[8] 0.02344093 0.00000000


_________________
我想,革命是不朽的。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 一个R语言的循环变单行问题 跪求各位大虾出手相助
帖子发表于 : 2010-08-19 17:08 
头像

注册: 2010-02-17 16:53
帖子: 35
送出感谢: 0 次
接收感谢: 0 次
不能写一个生成语句的小程序吗?
==
我不懂R,帮不了lz :em20


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 一个R语言的循环变单行问题 跪求各位大虾出手相助
帖子发表于 : 2010-09-10 13:28 

注册: 2010-08-31 13:45
帖子: 3
送出感谢: 0 次
接收感谢: 0 次
虽然看到的很晚,对楼主的所说的语言也不太了解,不过还是想问问楼主,你所谓的一次计算要10多分钟是不是太夸张了点哦,如果真是那样的话你还不如自己去寻找其他解决方式,这里想问一下,你说的那个语言循环能多耗多少时间?能节省一半?80%以上?算算需要的时间也长的不得了啊,若真是这样还不如去考虑选择更高处理能力的硬件或者去寻求一个全新的问题解决方案哦。


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 一个R语言的循环变单行问题 跪求各位大虾出手相助
帖子发表于 : 2010-10-24 12:13 
头像

注册: 2010-03-29 21:25
帖子: 317
地址: 顽强地活在封建的天空下
送出感谢: 2
接收感谢: 0 次
呵呵 是有一些夸张,所以我用了两台超算都以失败告终。最后用apple,i5内核,4cpu,8G memo才搞定的。
循环不可以用,会无限地降低效率,我把这个循环换成了一大堆的平行运算。。。。。


_________________
我想,革命是不朽的。


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 一个R语言的循环变单行问题 跪求各位大虾出手相助
帖子发表于 : 2010-10-24 13:42 

注册: 2006-01-02 3:15
帖子: 156
送出感谢: 0 次
接收感谢: 0 次
不知道用outer函数怎么样

c <- outer(a, a, FUN = "diffwave")


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 一个R语言的循环变单行问题 跪求各位大虾出手相助
帖子发表于 : 2010-10-28 11:05 

注册: 2007-01-28 15:47
帖子: 66
送出感谢: 0 次
接收感谢: 0 次
R语言?
RUBY?
貌似没这种叫法阿。。


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 一个R语言的循环变单行问题 跪求各位大虾出手相助
帖子发表于 : 2010-10-28 11:29 

注册: 2006-01-02 3:15
帖子: 156
送出感谢: 0 次
接收感谢: 0 次
shiweifu 写道:
R语言?
RUBY?
貌似没这种叫法阿。。


http://www.r-project.org/

R is a language and environment for statistical computing and graphics. It is a GNU project which is similar to the S language and environment which was developed at Bell Laboratories (formerly AT&T, now Lucent Technologies) by John Chambers and colleagues. R can be considered as a different implementation of S.

R provides a wide variety of statistical (linear and nonlinear modelling, classical statistical tests, time-series analysis, classification, clustering, ...) and graphical techniques, and is highly extensible. The S language is often the vehicle of choice for research in statistical methodology, and R provides an Open Source route to participation in that activity.

One of R's strengths is the ease with which well-designed publication-quality plots can be produced, including mathematical symbols and formulae where needed. Great care has been taken over the defaults for the minor design choices in graphics, but the user retains full control.


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 7 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译