全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1367 8
2017-11-21
adjacency = matrix(1,nrow = 3600,ncol = 3600)
Sdatexpr = as.numeric(Sdatexpr)
sc = as.matrix(as.numeric(Sdatexpr))
for(i in 1:3600){
  for(j in 1:3600){
    sd = as.matrix(as.numeric(round(sc[i,j],2)))
    adjacency[i,j] = 1/(1+ml_fun(0.7,1,-0.3*abs(sd)^0.7,3,0.1))
  }
}

Sdatexpr是一个3600*3600的实对称矩阵。我想把Sdatexpr中m行n列处的元素通过运算之后放到新矩阵(adjacency矩阵)中的m行n列处。ml_fun函数如下:

library(expm)
ml_fun <- function(a,b,x,n,eps0){
  if (nargs() < 5) eps0 <- .Machine$double.eps
  if (nargs() < 4) n <- 0
  am = matrix(1,nrow = 1,ncol = 1)
  f <- 0 ; fa <- am ; j <-0
  while(norm(fa,"1")>=eps0){
    # fa <- gamma(j+n+1)%/%gamma(j+1)%/%gamma(a%*%j+a%*%n+b)%*%x%^%j
    fa <- gamma(j+n+1)/gamma(j+1)/gamma(a*j+a*n+b)*x%^%j
    f <- f+fa ; j<-j+1
  }
}
运行之后提示:
Error in adjacency[i, j] <- 1/(1 + ml_fun(0.7, 1, -0.3 * abs(sd)^0.7,  :
  replacement has length zero
求同志们帮助,是什么原因导致的这个错误呢。

二维码

扫码加我 拉你入群

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

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

全部回复
2017-11-23 09:04:01
顶顶,求助。。
二维码

扫码加我 拉你入群

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

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

2017-11-27 09:31:55
顶顶~~
二维码

扫码加我 拉你入群

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

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

2017-12-5 00:02:48
针对矩阵元素的运算,大多数不需要循环吧,直接对矩阵用做运算函数,得到对应的值矩阵
附件列表
Untitled.png

原图尺寸 7.28 KB

Untitled.png

二维码

扫码加我 拉你入群

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

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

2017-12-6 09:00:57
你得把计算公式和问题贴出来,R使用的是向量运算,感觉代码不需要这么复杂。
二维码

扫码加我 拉你入群

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

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

2017-12-15 13:58:30
zhumengjin 发表于 2017-12-5 00:02
针对矩阵元素的运算,大多数不需要循环吧,直接对矩阵用做运算函数,得到对应的值矩阵
感谢!
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
栏目导航
热门文章
推荐文章

说点什么

分享

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