提问人:Jack_L 提问时间:11/1/2023 最后编辑:Jane DoeJack_L 更新时间:11/2/2023 访问量:47
如何在 R 中生成 1 和 0 的国际象棋/棋盘矩阵而不全部输入?
How do I produce a chess/chessboard matrix of 1's and 0's in R without typing it all out?
问:
我有一个与此处显示的问题相同的问题(即,制作 1 和 0 的交替矩阵):
我的问题是,似乎没有人回答这个问题,检查使用偶数行/列时会发生什么,例如,正常大小的棋盘(即 8 x 8)。
有没有直接的解决方案?
谢谢!
答:
0赞
ThomasIsCoding
11/2/2023
#1
也许你可以试试
f <- function(n) {
m <- matrix(seq(1:n^2) %% 2, nrow = n)
if (!n %% 2) {
idx <- !seq_len(n) %% 2
m[, idx] <- 1 - m[, idx]
}
m
}
或
f <- function(n) {
sapply(1:n, \(k) (!k %% 2) - (-1)^k * rep_len(c(1, 0), n))
}
这样
> f(3)
[,1] [,2] [,3]
[1,] 1 0 1
[2,] 0 1 0
[3,] 1 0 1
> f(4)
[,1] [,2] [,3] [,4]
[1,] 1 0 1 0
[2,] 0 1 0 1
[3,] 1 0 1 0
[4,] 0 1 0 1
> f(5)
[,1] [,2] [,3] [,4] [,5]
[1,] 1 0 1 0 1
[2,] 0 1 0 1 0
[3,] 1 0 1 0 1
[4,] 0 1 0 1 0
[5,] 1 0 1 0 1
> f(6)
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 0 1 0 1 0
[2,] 0 1 0 1 0 1
[3,] 1 0 1 0 1 0
[4,] 0 1 0 1 0 1
[5,] 1 0 1 0 1 0
[6,] 0 1 0 1 0 1
评论