R语言ijMatrix函数异常:生成序列仅返回单个值的问题
解决R语言ijMatrix函数的序列生成与矩阵返回问题
你的问题核心是运算符优先级导致序列生成错误:在R中,:的优先级高于+,所以i : i + n -1会先执行i:i得到单个值,再加上n-1,自然只返回一个数。只要给i + n -1加上括号,就能先计算序列的终点值,再生成正确的序列。
另外,当前函数最后返回的是列表,需要把它转换成矩阵才能得到你要的n×n格式。以下是修改后的代码,完全保留你原有的循环编写风格:
ijMatrix <- function(n) { temp <- list() for (i in 0 : -(n - 1)) { temp2 <- list(i:(i + n - 1)) # 修复:给终点值加括号 temp[length(temp) + 1] <- temp2 } # 将列表转换为矩阵,按行填充 matrix(unlist(temp), nrow = n, byrow = TRUE) } print(ijMatrix(3))
运行这段代码,输出结果就是你预期的:
[,1] [,2] [,3] [1,] 0 -1 -2 [2,] 1 0 -1 [3,] 2 1 0
内容的提问来源于stack exchange,提问作者ben chen
相关产品推荐
相关产品推荐

