作者laba1014 (I-20快点来)
站内Statistics
标题Re: [程式] R 基本回圈的两个问题
时间Mon May 17 17:13:47 2010
抱歉 我想我把问题说的更清楚好了
1F:→ maoc:这要看你怎麽写 f(x,y) 了, 写得好的话可以用 sapply ?? 05/17 07:16
2F:→ diplazium:我想是你产生t(Q)的f(X,Y)写的方式无法处理X, Y vectors 05/17 09:12
3F:→ diplazium:以你的例子,可用outer(X, Y, FUN="*")来替代双重回圈式 05/17 09:14
4F:→ rockken:令函数f=function(a,b){a*b+8},outer(x, y, "f")。 05/17 09:28
5F:→ clickhere:你的f()?? 05/17 13:44
函数 f(x,y) 其实应该是 f(x1 , x2 , x3 , y1, y2)
f 蛮复杂的 其中包含积分 微分还有估计nonparametric mean的函数
之前的 X[i], i = 1...n 应该是 X[i,1] , X[i,2], X[i,3]
一个 n ×3 的 matrix
Y[j], j = 1...m 应该是 Y[j,1] , Y[j,2]
一个 m ×2 的 matrix
我希望的 P[i,j] <- f( X[i,1] , X[i,2] , X[i,3] , Y[j,1], Y[j,2] )
outer 虽好 不过他似乎不能用在 matrix 上?
(d大 r大 提供的指令 outer(x, y, "f") 的确很好 不过似乎 x , y 只能是 vector??
我尝试用 split下去拆解 X Y 还是无法作用)
m大 我尝试写了两圈apply混在一起 运算时间大概变成原本的1/3
不过还是很慢 如果能用类似outer的指令就会非常快
不知板上前辈能否赐教 <(_ _)> 非常感谢
PS: C大 我的 f(x1 , x2 , x3 , y1, y2) 长很丑 是以下的形式
-[x1 - U(x2 , x3)]*[ g(x3) / g(x2, x3)] * d h(x2, y1, y2)/dx2 + l(x3,y1,y2)
U(.,.) 是nonparametric mean function , h(., . ,.) 是 kernel和其他函数相乘
g 是 density kernel , l 是 ∫ U(x2,.)*h(x2,.,.) dx2
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.9.224
※ 编辑: laba1014 来自: 61.230.9.224 (05/17 17:18)
※ 编辑: laba1014 来自: 61.230.9.224 (05/17 17:19)
※ 编辑: laba1014 来自: 61.230.9.224 (05/17 17:20)
6F:推 Aqery:R本身就很慢,想要变快的话无非几种方式,一个是演算法, 05/17 22:03
7F:→ Aqery:还有就是运用R最大的特性: vectorization 05/17 22:03
8F:→ Aqery:把你的运算可以vector化的尽量vector化,这样算起来可改进 05/17 22:04
9F:→ Aqery:很多,另外,apply系的function我觉得对提升速度可能没多大 05/17 22:05
10F:→ Aqery:帮助,因为他们也只是包起来的loop 05/17 22:05
11F:→ Aqery:原po有试过sweep吗?我的经验是他比apply系的更能提升速度 05/17 22:07
12F:→ clickhere:-[x1 - U(x2 , x3)]*[ g(x3) / g(x2, x3)] 和j无关 05/18 09:26
13F:→ clickhere:d h(x2, y1, y2)/dx2 和 l(x3,y1,y2) 可以独立计算. 05/18 09:27
14F:→ laba1014:呜呜呜 谢谢大家的帮忙 我成功把计算时间压缩到我理想的 05/19 05:05
15F:→ laba1014:状况了 05/19 05:06
16F:→ laba1014:太感激了 05/19 05:06