的数据
我试图创建一个函数hilbert_matrix
,它计算hilbert_matrix
的维数等于:dim_mat
,其中dim_mat
是正整数。
有谁能解释一下为什么当我尝试
hilbert_matrix(10).
字符串
下面是我的代码:
hilbert_matrix <- function(dim_mat) {
if (!is.numeric(dim_mat) || length(dim_mat) != 1 || dim_mat <= 0 || !is.integer(dim_mat)) {
return(NULL)
}
hilbert <- matrix(0, nrow = dim_mat, ncol = dim_mat)
for (i in 1:dim_mat) {
for (j in 1:dim_mat) {
hilbert[i, j] <- 1 / (i + j - 1)
}
}
return(hilbert)
}
型
提前感谢您
2条答案
按热度按时间a8jjtwal1#
返回
NULL
是因为10
不是整数。注意,在if
语句中,有一个条件!is.integer(dim_mat)
,它的计算结果是TRUE
,因此返回NULL
来使用你的函数,考虑只传递整数:字符串
检查数字是否为整数的最佳方法是
as.integer(x) == x
或floor(x) == x
等,而不是直接检查is.integer(x)
。无论你做什么,都相当于:
型
3htmauhk2#
@Onyambu已经解释了你得到
NULL
的原因,所以没有必要在这里再次讨论它,但下面的代码只是Hilbert
矩阵的另一个较短的实现。试试
outer
字符串
你会得到,例如,
型