【问题标题】:What are the default values for nrow and ncol in R's matrix function?R的矩阵函数中nrow和ncol的默认值是什么?
【发布时间】:2020-01-19 20:57:38
【问题描述】:

R中函数matrix中的参数nrow和ncol的默认值是什么?

简单来说:写作

matrix(c(1,2,3,4,5,6), ncol=2)

我可以让函数matrix自动计算得到的矩阵有多少行,输出为

     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6

但是,如果我希望 ncol 成为此函数调用中的位置参数,我只需删除 ncol=,即

matrix(c(1,2,3,4,5,6), 2)

“2”最终将成为nrow 的值,而不是ncol 的值,我将获得矩阵

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

我可以通过为函数提供 nrow 的值来解决此问题,以便将 2 推到正确的位置,如下所示:

matrix(c(1,2,3,4,5,6), 3, 2)

我将再次获得所需的矩阵。如果我为ncol 使用关键字参数,我也可以使用这种方法为nrow 提供值,但同时想清楚并提供nrow 参数:

matrix(c(1,2,3,4,5,6), nrow=3, ncol=2)

但是现在matrix不会为我计算行数,但我必须自己计算。如果我想告诉matrix 自己计算行数,我应该写什么值而不是3?我尝试将3 替换为NULL、None(通常适用于Python 中的这种情况)和-1,但这些都给了我错误(0 和1 给了我矩阵分别为 0 行和 1 行)。

【问题讨论】:

    标签: r matrix default-value


    【解决方案1】:

    我们可以在前面放一个,

     matrix(c(1,2,3,4,5,6), ,2)
    

    这里,, 是根据函数中的参数顺序放置的。如果我们检查?matrix,用法是

    矩阵(数据 = NA,nrow = 1,ncol = 1,byrow = FALSE,dimnames = NULL)

    请注意,大多数参数都有默认值。使用名称传递函数参数总是更好,但如果我们想跳过,可以使用正确数量的,(也取决于函数行为)。在这里,我们也可以在使用, 跳过byrow 参数后设置dimnames

    matrix(c(1,2,3,4,5,6), ,2, ,list(NULL, c('a', 'b')))
    #     a b
    #[1,] 1 4
    #[2,] 2 5
    #[3,] 3 6
    

    【讨论】:

    • 好的,很高兴知道。在这种情况下,nrow 参数会得到什么值?
    • @HelloGoodbye 它始终基于函数中参数的顺序。在这里,?matrix。如果您检查matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL) 的3 用法,则第二个参数是nrow,然后是ncol。
    • 如果参数作为位置参数给出,是的(如果它们作为关键字参数给出,顺序无关紧要)。您现在回答了我的哪些问题?
    • @HelloGoodbye 我的建议是使用关键字参数而不是基于位置的位置,因为位置可能很棘手并且容易出错(通过删除其中一个逗号)。此外,如果您使用代码进行开发,其他开发人员也可能使用您的代码,并且可能很难理解它的含义
    • 我同意使用关键字参数而不是许多位置参数可以使代码更易于阅读。您在答案中写道,大多数参数都有默认值——好吧,您知道这些值是什么吗? :) 这仍然是我想知道的,也是我的问题所在。
    猜你喜欢
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 2015-09-12
    • 2017-04-15
    • 1970-01-01
    • 2016-02-15
    • 1970-01-01
    • 2015-12-23
    相关资源
    最近更新 更多