gpt4 book ai didi

r - 如何使用 R 函数将向量转换为矩阵?

转载 作者:行者123 更新时间:2023-12-02 01:26:47 24 4
gpt4 key购买 nike

我刚刚学习 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) .

最佳答案

我认为 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

但是,任何涉及使用原子值 x 调用 matrixcbind 的解决方案(例如 f(2))将产生一个单行矩阵而不是一个向量。如果在这种情况下你想要一个向量而不是矩阵,你可以这样做

f <- function(x)  (if(length(x) == 1) c else cbind)(x, x^2, x^3) 

f(c(2, 3, 4))
#> x
#> [1,] 2 4 8
#> [2,] 3 9 27
#> [3,] 4 16 64

f(2)
#> [1] 2 4 8

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

关于r - 如何使用 R 函数将向量转换为矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74407418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com