You could do

```
n <- 3
mat <- matrix(nrow = n, ncol = n)
pmax(row(mat), col(mat)) ^ 2
# [,1] [,2] [,3]
#[1,] 1 4 9
#[2,] 4 4 9
#[3,] 9 9 9
```

Turn this into a function

```
f1 = function(n = 2) {
mat <- matrix(nrow = n, ncol = n)
pmax(row(mat), col(mat)) ^ 2
}
f1()
# [,1] [,2]
#[1,] 1 4
#[2,] 4 4
```

A second option using `outer`

```
f2 <- function(n = 3) {
tmp <- (1:n)^2
outer(tmp, tmp, pmax)
}
```