我需要将相邻的单元格总结为康威的生活游戏。我有一个20x20矩阵,我需要计算邻居才能申请游戏规则。
我写的脚本的第一个部分
generar_grilla<-function(cant, prob_vida){
grilla<-matrix(ncol=cant, nrow=cant)
grilla[i]<-rbinom(cant,1,prob_vida)
return(grilla)
}
然后,我在相关文章中查看了一些计算邻居的规则,我发现了这一点:
vecino<-function(grilla,j,k) {
cant <- nrow(grilla)
count <- 0
if(j > 1) {
count <- count + grilla[j-1, k]
if (k > 1) count <- count + grilla[j-1, k-1]
if (k < cant) count <- count + grilla[j-1, k+1]
}
if(j < cant) {
count <- count + grilla[j+1,k]
if (k > 1) count <- count + grilla[j+1, k-1]
if (k < cant) count <- count + grilla[j+1, k+1]
}
if(k > 1) count <- count + grilla[j, k-1]
if(k < cant) count <- count + grilla[j, k+1]
count
}
当我以示例运行脚本的这一部分时:
vecino(grilla,3,5)
我得到此错误:
Grilla中的错误[J -1,K]:尺寸数字不正确
可以在此处查看Conway游戏的完整脚本:https://www.r-bloggers.com/conway’S- game-of-life-life-infife-infife-in-rife-in-r-with-with-ggplot2-and--动画/
预先感谢
您的功能generar_grilla
没有意义。它涉及未指定的i
。您可以按照以下方式编写它(请注意,首先创建值然后将它们塑造成矩阵比首先创建矩阵然后用值填充它更容易将其塑造成矩阵):
generar_grilla<-function(cant, prob_vida) {
cells = rbinom(cant^2,1,prob_vida)
matrix(cells,nrow = cant)}
然后按预期工作:
> grilla = generar_grilla(5,.2)
> grilla
[,1] [,2] [,3] [,4] [,5]
[1,] 0 1 0 1 1
[2,] 0 0 0 0 1
[3,] 0 0 0 0 0
[4,] 0 0 1 0 1
[5,] 0 0 0 0 0
> vecino(grilla,2,4)
[1] 3