However, there is one more issue, which is a subject for discussion. If you take true network and replace all the zeros with the same non-negative value you would still get nearly perfect precision, while based on my understanding you should get very poor precision:
syntren300.net.nozeros <- syntren300.net
syntren300.net.nozeros[syntren300.net.nozeros==0] <- 0.9
e <- evaluate(syntren300.net.nozeros,syntren300.net,extend=0,sym=FALSE)
aupr(e)
auroc(e)
e <- evaluate(syntren300.net.nozeros,syntren300.net,extend=no.edges,sym=FALSE)
aupr(e)
auroc(e)
syntren300.net.nozeros <- syntren300.net
syntren300.net.nozeros[syntren300.net.nozeros==0] <- 0.9
syntren300.net.nozeros[4, ] <- 0
e <- evaluate(syntren300.net.nozeros,syntren300.net,extend=0,sym=FALSE)
aupr(e)
auroc(e)
e <- evaluate(syntren300.net.nozeros,syntren300.net,extend=no.edges,sym=FALSE)
aupr(e)
auroc(e)