【问题标题】:How to make an R function to turn a vector into a matrix?如何使R函数将向量转换为矩阵?
【发布时间】:2022-11-12 04:21:44
【问题描述】:

我只是在学习 R 并开始使用函数。我制作了一个包含 0 个或多个变量的函数,但它们总是返回一个值。我可以使用c(x,y,z) 创建一个返回值向量的函数,但是当我输入一个向量时,它只返回一个更长的向量。例如,如果我创建一个函数f <- function(x) { c(x, x^2, x^3) } 并将其传递给2,它会返回2, 4, 8。但是如果我将向量2,3,4 传递给它,它会返回2,4,8,3,9,27,4,16,64。我想要一个矩阵,其中 3 行对应于我给它的 3 个输入,3 列对应于返回值。所以一个 3x3 矩阵,其列 (2,3,4),(4,9,16),(8,27,64)。我也希望能够使用基本功能来做到这一点,尽管如果我必须使用包来做到这一点也很好

尝试输入(2,3,4)。想要的输出:

2   4   8
3   9  27
4  16  64

但得到了(2,4,8,3,9,27,4,16,64)

【问题讨论】:

    标签: r matrix vector


    【解决方案1】:

    使用matrix(),将nrow设置为输入向量的长度:

    f <- function(x) {
      matrix(c(x, x^2, x^3), nrow = length(x))
    } 
    
    f(c(2, 3, 4))
    
    #>      [,1] [,2] [,3]
    #> [1,]    2    4    8
    #> [2,]    3    9   27
    #> [3,]    4   16   64
    

    创建于 2022 年 11 月 11 日,reprex v2.0.2

    【讨论】:

      【解决方案2】:

      我认为 cbind 是你所需要的:

      f <- function(x)  cbind(x, x^2, x^3) 
      
      f(c(2, 3, 4))
      #>      x      
      #> [1,] 2  4  8
      #> [2,] 3  9 27
      #> [3,] 4 16 64
      

      创建于 2022-11-11 reprex v2.0.2

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-14
        • 1970-01-01
        • 1970-01-01
        • 2017-06-10
        • 1970-01-01
        • 2018-07-17
        • 2011-10-12
        • 1970-01-01
        相关资源
        最近更新 更多