gpt4 book ai didi

r - 为什么这个带有 lambda 函数的管道不返回矩阵?

转载 作者:行者123 更新时间:2023-12-02 18:31:38 25 4
gpt4 key购买 nike

尝试弄清楚新的基本 R 管道和 lambda 函数是如何工作的。我想生成一个包含三列的矩阵并重命名这些列。我认为这会起作用:

mat1 <- matrix(rnorm(24), ncol = 3) |>
(\(x) colnames(x) <- c("X", "Y", "Z"))()

但它只返回列名称的向量

> mat1
[1] "X" "Y" "Z"

谁能向我解释一下为什么这不起作用?

最佳答案

您的代码类似于

mat <- matrix(rnorm(24), ncol = 3)
abc <- colnames(mat) <- c("X", "Y", "Z")
abc
#[1] "X" "Y" "Z"

它仅返回列名称,而不返回矩阵。

您需要在管道末尾返回更改后的矩阵值

mat1 <- matrix(rnorm(24), ncol = 3) |>
(\(x) {colnames(x) <- c("X", "Y", "Z");x})()

mat1
# X Y Z
#[1,] -0.62795166 0.18367824 0.5268557
#[2,] -0.04691673 1.77874162 -0.2302622
#[3,] 0.16261812 0.03768285 1.3974267
#[4,] 1.29230591 1.17622012 1.7636530
#[5,] -0.46355650 -0.55853581 0.4856014
#[6,] 0.30546323 -0.94561794 -0.2657389
#[7,] -0.08398871 -0.66518864 0.1516114
#[8,] 0.41036345 0.45203019 1.3766098

关于r - 为什么这个带有 lambda 函数的管道不返回矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69333328/

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