以下のコードを自分のネットワークに適応させる前に、指数関数的でスケールフリーなネットワークへの失敗と攻撃をシミュレートするチュートリアル コードを実行しようとしました。ただし、コードを実行すると、次のようなエラーが表示されます。Error: object 'reps' not found
私は初心者なので、何が問題なのかわかりません。助けていただければ幸いです。
コードは次のとおりです。
Tolerance <- function(n=100, m=2, f=seq(0, 0.05, 0.01), reps=1)
library(igraph)
fail <- function(net, r) {
# Remove r vertices by random
vids <- sample(V(net), r)
net <- delete.vertices(net,vids)
return(net)
}
attack <- function(net, r) {
# Remove top r vertices sorted by degree
# Return networks
m <- matrix(0, vcount(net), 2)
m[,1] <- seq(0, vcount(net)-1, 1)
m[,2] <- degree(net)
m <- data.frame(m)
m.sort <- m[order(m$X2),]
vids <- tail(m.sort,r)$X1
net <- delete.vertices(net,vids)
return(net)
}
compSize <- function(net) {
c <- clusters(net)
gc <- c$csize[1]/vcount(net)
cs <- as.vector(table(c$membership))
if(length(cs) > 1) {
ic <- mean(cs[2:length(cs)])
} else {
ic <- cs[1]
}
return(list("gc"=S, "ic"=ic))
}
f <- seq(0, 0.05, 0.005)
mat <- matrix(0.0, length(f), 5)
mat[,1] <- f
for(i in 1:reps) {
e <- ba.game(n, power=0, m=m, directed=F)
sf <- ba.game(n, power=1, m=m, directed=F)
mat[1,2] <- diameter(e)
mat[1,3] <- mat[1,2]
mat[1,4] <- diameter(sf)
mat[1,5] <- mat[1,2]
for(j in 2:length(f)) {
e <- ba.game(n, power=0, m=m, directed=F)
sf <- ba.game(n, power=1, m=m, directed=F)
r <- f[j]*n
ee <- fail(e, r)
ea <- attack(e, r)
sfe <- fail(sf, r)
sfa <- attack(sf, r)
mat[j,2] <- diameter(ee)
mat[j,3] <- diameter(ea)
mat[j,4] <- diameter(sfe)
mat[j,5] <- diameter(sfa)
}
}
tdf <- data.frame(mat)
colnames(tdf) <- c("f", "ee", "ea", "sfe", "sfa")
return(tdf)
}
TolerancePlot <- function(tdf) {
# Compute tolerance data.frame first
# tdf <- Tolerance(...)
# TolerancePlot(tdf)
plot(tdf$f, tdf$sfe, ylim=c(0,20), xlab="Fraction removed nodes", ylab="Diameter",
type="b", col="blue", pch=0,
main="Error and Attack Tolerance")
lines(tdf$f, tdf$sfa, type="b", pch=1, col="red")
lines(tdf$f, tdf$ee, type="b", pch=15, col="blue")
lines(tdf$f, tdf$ea, type="b", pch=16, col="red")
legend(0, 20, legend=c("SF Attack", "SF Error", "E Attack", "E Error"),
pch=c(1,0,16,15), col=c("red", "blue"), text.col=c("red", "blue"), bty="n")
}