首页 文章

外部结构矩阵

提问于
浏览
2

我有一个问题,如何构建这种类型的矩阵,节省更多的时间 . 任务是用户输入自然数(n = 1,2,3,4,5 ......)并且R必须打印这种类型的矩阵(在n = 4的矩阵类型下面) . 我观察到第一列和第二列与第6和第7列对称,并且足以正确打印左侧的第一列和第二列 . 此外,我观察到第3列是作为第二列c(0,0,1,1,1,0,0)获得的,其对应于1 1 = 3 - 该列的数量 . 但是我不明白,对于一般情况,这个矩阵的算法是什么(对于n = 6的fe,dim是2n-1 x 2n-1(nrow x ncol) . 它是构造这个矩阵的最简单的变体吗?按列或函数外部列允许简化该任务?

1 1 1 1 1 1 1
1 2 2 2 2 2 1
1 2 3 3 3 2 1
1 2 3 4 3 2 1
1 2 3 3 3 2 1
1 2 2 2 2 2 1
1 1 1 1 1 1 1

1 回答

  • 5

    是的, outer 可以让这更容易 . 结合 pmin ,它为您提供了您正在寻找的行为

    n <- 4
    
    series <- c(seq_len(n-1), n, rev(seq_len(n-1)))
    # [1] 1 2 3 4 3 2 1
    
    outer(series, series, pmin)
         # [,1] [,2] [,3] [,4] [,5] [,6] [,7]
    # [1,]    1    1    1    1    1    1    1
    # [2,]    1    2    2    2    2    2    1
    # [3,]    1    2    3    3    3    2    1
    # [4,]    1    2    3    4    3    2    1
    # [5,]    1    2    3    3    3    2    1
    # [6,]    1    2    2    2    2    2    1
    # [7,]    1    1    1    1    1    1    1
    

    这是一个功能

    myfun <- function(n) {
                    series <- c(seq_len(n-1), n, rev(seq_len(n-1)))
                    return(outer(series, series, pmin))
                }
    myfun(4)
    

相关问题