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