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
求同志们帮助,是什么原因导致的这个错误呢。


雷达卡





京公网安备 11010802022788号







