Ziggurat矩阵不';“我不能和”一起工作;至于;及;重复;R中的循环-为什么?
我是R的初学者。我不明白为什么“for”循环在我的矩阵中不起作用。我需要构建ziggurat,在其中我在函数中输入“n”,该函数必须返回如图所示的矩阵。 此代码在n等于5或小于5时工作。但当它大于5时,“for”循环不会贯穿所有(1:hunt)数字。例如,请参见下图 我尝试使用“重复”循环,但它不太起作用。我的代码哪里有错误Ziggurat矩阵不';“我不能和”一起工作;至于;及;重复;R中的循环-为什么?,r,loops,for-loop,matrix,repeat,R,Loops,For Loop,Matrix,Repeat,我是R的初学者。我不明白为什么“for”循环在我的矩阵中不起作用。我需要构建ziggurat,在其中我在函数中输入“n”,该函数必须返回如图所示的矩阵。 此代码在n等于5或小于5时工作。但当它大于5时,“for”循环不会贯穿所有(1:hunt)数字。例如,请参见下图 我尝试使用“重复”循环,但它不太起作用。我的代码哪里有错误 build_ziggurat <- function(n){ h<-1 hunt <- n-4 if(n==1){ m<- matrix(1,
build_ziggurat <- function(n){
h<-1
hunt <- n-4
if(n==1){
m<- matrix(1, nrow = 1, ncol = 1)
} else {
if(n<5){
d <- matrix(h, ncol = 2*n-h, nrow=2*n-h)
d[2:(n+n-2),2:(n+n-2)]<-h+1;d
d[(n-h):(n+h), (n-h):(n+h)]<-n-h;d
d[n,n]<-n;d
print(d)
} else {
for(i in hunt:1){
h<-1
t <- matrix(h, ncol = 2*n-h, nrow=2*n-h)
t[2:(n+n-2),2:(n+n-2)]<-h+1
t[(n-h-i):(n+h+i), (n-h-i):(n+h+i)]<-(n-h-i)
t[(n-h):(n+h),(n-h):(n+h)]<-n-h
t[n,n]<-n
return(t)
}
}
}
if(n==1) m
}
build_ziggurat你在找这样的东西吗
zigguratCreator <- function(n){
out <- mat.or.vec(nr = (n - 1)*2 + 1, nc = (n - 1)*2 + 1) + 1
for(i in seq(n - 1)){
out[seq(i + 1, nrow(out) - i), seq(i + 1, ncol(out) - i)] <- i + 1
}
return(out)
}
zigguratCreator(n = 6)
zigguratCreatorzigguratCreator您希望找到什么?您能解释一下ziggurat@M.Hassan在ziggurat中的逻辑吗?我有“n”级。每个级别必须包含从1到“n”的索引编号,其中“n”是ziggurat的顶级。在屏幕截图2中,你可以看到关卡中没有“4”。取而代之的是两个级别中的“3”,这是Stackoverflow。在回答问题时,最好解释一下你提出的解决方案是如何以及为什么能够解决眼前的问题的。更多信息请点击此处:
zigguratCreator <- function(n){
size <- 2*n-1
out <- matrix(nr=size, nc=size)
for(i in 1:size){
for (j in 1:size){
out[i,j] <-min(n-abs(i-n),n-abs(j-n))
}
}
return(out)
}