gpt4 book ai didi

r - 在R中创建一个递增的数字同心环矩阵

转载 作者:行者123 更新时间:2023-12-04 04:47:06 26 4
gpt4 key购买 nike

我需要在R中编写一个函数,该函数创建一个递增的同心数字环矩阵。该函数的参数是多个层。例如,如果x = 3,则矩阵将如下所示:

1 1 1 1 1  
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1

我不知道该怎么做。我真的很感谢任何建议。

最佳答案

1)尝试以下操作:

x <- 3 # input

n <- 2*x-1
m <- diag(n)
x - pmax(abs(row(m) - x), abs(col(m) - x))

给予:
     [,1] [,2] [,3] [,4] [,5]
[1,] 1 1 1 1 1
[2,] 1 2 2 2 1
[3,] 1 2 3 2 1
[4,] 1 2 2 2 1
[5,] 1 1 1 1 1

2)第二种方法是:
x <- 3 # input

n <- 2*x-1
mid <- pmin(1:n, n:1) # middle row/column
outer(mid, mid, pmin)

得到与以前相同的结果。

3)与前两种方法有一些相似之处的另一种方法是:
x <- 3 # input

n <- 2*x-1
Dist <- abs(seq_len(n) - x)
x - outer(Dist, Dist, pmax)

注意:上面给出了问题中显示的示例矩阵,但是问题的主题是指环应该在增加,这可能意味着从中心到外部增加,因此如果要这样做,请在 mmid处尝试和 Dist和以前一样:
pmax(abs(row(m) - x), abs(col(m) - x)) + 1

或者
x - outer(mid, mid, pmin) + 1

或者
outer(Dist, Dist, pmax) + 1

这些都给:
     [,1] [,2] [,3] [,4] [,5]
[1,] 3 3 3 3 3
[2,] 3 2 2 2 3
[3,] 3 2 1 2 3
[4,] 3 2 2 2 3
[5,] 3 3 3 3 3

关于r - 在R中创建一个递增的数字同心环矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33682029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com