楼主: bbslover
2351 5

【求助】各位朋友帮忙使用一个“向量化”的程序替换我的双 for 循环,谢谢 [推广有奖]

  • 9关注
  • 4粉丝

学术权威

83%

还不是VIP/贵宾

-

威望
0
论坛币
3769 个
通用积分
150.7623
学术水平
39 点
热心指数
65 点
信用等级
45 点
经验
87805 点
帖子
4861
精华
0
在线时间
3100 小时
注册时间
2008-2-26
最后登录
2024-4-26

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
x: 202 * 263 202行,263列

num.compd<-nrow(x); # number of compounds
diss.all<-0
for( i in 1:num.compd)
   for (j in 1:num.compd)
      if (i!=j) {
        S1<-sum(x[i,]*x[j,])
        S2<-sum(x[i,]^2)
        S3<-sum(x[j,]^2)
        sim2<-S1/(S2+S3-S1)
        diss2<-1-sim2
        diss.all<-diss.all+diss2}
这个程序计算速度太慢了,各位兄弟帮忙各个向量化的程序替换我的,谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:For 向量化 comp COM NUM 求助 求助 程序 程序 帮忙 帮忙 朋友 朋友 向量化 向量化

回帖推荐

bbslover 发表于5楼  查看完整内容

3# shenbaiseshatan 这里是公式,还有数据,谢谢大家帮助,这个问题解决了,把X变成矩阵形式就快多了,数据框很慢。 x

tiancai0071997 发表于4楼  查看完整内容

可以尝试不用循环

shenbaiseshatan 发表于2楼  查看完整内容

初步改进意见:

本帖被以下文库推荐

沙发
shenbaiseshatan 在职认证  发表于 2010-12-27 16:07:18 |只看作者 |坛友微信交流群
初步改进意见:
  1. S1<-x[i,] %*% t(x[j,])
  2. S2<-x[i,] %*% t(x[i,])
  3. S3<-x[j,] %*% t(x[j,])
复制代码
胜人者有力,自胜者强!

使用道具

藤椅
shenbaiseshatan 在职认证  发表于 2010-12-27 16:57:59 |只看作者 |坛友微信交流群
此外楼主的程序有重复计算的问题,建议将实际的公式写出,而不是以程序代码形式
胜人者有力,自胜者强!

使用道具

板凳
tiancai0071997 发表于 2010-12-27 18:55:11 |只看作者 |坛友微信交流群
  1. num.compd<-nrow(x)
  2. diss.all<-0
  3. s <- x %*% t(x)
  4. for(i in 1:num.compd){
  5.         s1 <- s[i, -i]
  6.         s2 <- rep(s[i, i], num.compd - 1)
  7.         s3 <- c(diag(s)[-i])
  8.         sim2 <- s1/(s2 + s3 - s1)
  9.         diss2 <- 1 - sim2
  10.         diss.all <- diss.all + diss2
  11.         print(diss.all)       
  12. }
复制代码
可以尝试不用循环

使用道具

报纸
bbslover 发表于 2010-12-28 16:28:33 |只看作者 |坛友微信交流群
3# shenbaiseshatan

my data.rar (132.41 KB)

这里是公式,还有数据,谢谢大家帮助,这个问题解决了,把X变成矩阵形式就快多了,数据框很慢。

x<-as.matrix(x)
xtx <- tcrossprod(x)
xtd <- diag(xtx)
xzz <- outer(xtd,xtd,'+')
zz  <- 1 - xtx/(xzz-xtx)
diss.all <- sum(zz)

这个很好。

使用道具

地板
bbslover 发表于 2010-12-28 16:30:01 |只看作者 |坛友微信交流群
谢谢 大家帮助啊,其实 我就是想求 Tanimoto coefficient.

使用道具

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

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

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

GMT+8, 2024-4-27 13:24