Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中列和行的默认矩阵数_R_Matrix_Default Value - Fatal编程技术网

R中列和行的默认矩阵数

R中列和行的默认矩阵数,r,matrix,default-value,R,Matrix,Default Value,在R中,我可以使用matrix()创建一个矩阵,该矩阵具有函数定义: function (data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL) { ... } 这表明行数(nrow)和列数(ncol)的默认值为1 那么,为什么会出现以下情况?为什么指定相同的1默认值会导致不同的矩阵 > matrix(1:9) [,1] [1,] 1 [2,] 2 [3,] 3 [4,] 4

在R中,我可以使用
matrix()
创建一个矩阵,该矩阵具有函数定义:

function (data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)
{ ... }
这表明行数(
nrow
)和列数(
ncol
)的默认值为1

那么,为什么会出现以下情况?为什么指定相同的
1
默认值会导致不同的矩阵

> matrix(1:9)
      [,1]
 [1,]    1
 [2,]    2
 [3,]    3
 [4,]    4
 [5,]    5
 [6,]    6
 [7,]    7
 [8,]    8
 [9,]    9

> matrix(1:9, ncol=1, nrow=1)
     [,1]
[1,]    1

面向用户的
base::matrix
调用:



由于这些参数的“缺失性”不受它们具有默认值这一事实的影响,因此可以独立地处理该逻辑,从某种意义上说。

;我不确定“覆盖”是否是最合适的术语,但基本上默认值和“缺失”是参数的正交属性。因此,内部函数知道是否实际指定了这两个参数中的每一个,并且可以区分以下两种情况:(A)
ncol=1,nrow=1
&非用户指定和(B)
ncol=1,nrow=1
&用户指定;甚至认为
ncol,nrow
值是相同的。意外地删除了我以前的注释。谢谢你的帮助!
matrix
# function (data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL) 
# {
#     if (is.object(data) || !is.atomic(data)) 
#         data <- as.vector(data)
#     .Internal(matrix(data, nrow, ncol, byrow, dimnames, missing(nrow), 
#         missing(ncol)))
# }
# <bytecode: 0x000000000b802e88>
# <environment: namespace:base>
f <- function(x = 1, y = 2) {
    cat(sprintf(
        "missing(x): %s\nmissing(y): %s\n", 
        missing(x), 
        missing(y)
    ))
}

f()
# missing(x): TRUE
# missing(y): TRUE