函数返回R中的二次矩阵

时间:2018-12-07 09:11:57

标签: r matrix

我创建了一个函数,该函数返回一个二次矩阵,其每个元素是行号或列号的平方,具体取决于哪个更大 这是我的代码,但是到目前为止还行不通。 有人可以帮忙吗????

matrix_a = function(A) {A = matrix(data = 0, nrow = n, ncol = n) for (i in 1:n) {
for (j in 1:n) {
  if (i>=j) {A[i,j] = (i^2)} 
  if (i<j) {A[i,j] = (j^2)}
}} return(matrix_a)}

2 个答案:

答案 0 :(得分:6)

你可以做

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

将其转换为功能

matrix_a = function(n = 2) {
  mat <- matrix(nrow = n, ncol = n)
  pmax(row(mat), col(mat)) ^ 2
}

matrix_a()
#     [,1] [,2]
#[1,]    1    4
#[2,]    4    4

答案 1 :(得分:0)

您快到了。您只需要指定n并在最后返回正确的对象即可。

matrix_a = function(n) {
    A = matrix(data = 0, nrow = n, ncol = n) 
    for (i in 1:n) {
        for (j in 1:n) {
            if (i>=j) {A[i,j] = (i^2)} 
            if (i<j) {A[i,j] = (j^2)}
        }
    } 
    A
}

matrix_a(3)
#      [,1] [,2] [,3]
# [1,]    1    4    9
# [2,]    4    4    9
# [3,]    9    9    9