gpt4 book ai didi

r - R 中意外的应用函数行为

转载 作者:行者123 更新时间:2023-12-04 10:49:33 25 4
gpt4 key购买 nike

我发现了一个令人惊讶的行为 apply我想知道是否有人可以解释一下。让我们看一个简单的矩阵:

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

我们可以这样垂直翻转它:
> apply(m, MARGIN=2, rev)
[,1] [,2] [,3] [,4]
[1,] 2 4 6 8
[2,] 1 3 5 7

这适用于 rev()向量反转函数迭代到每一列。但是当我们尝试按行应用 rev 时,我们得到:
> apply(m, MARGIN=1, rev)
[,1] [,2]
[1,] 7 8
[2,] 5 6
[3,] 3 4
[4,] 1 2

.. 90 度逆时针旋转! Apply 使用 FUN=function(v) {v[length(v):1]} 提供相同的结果所以这绝对不是rev​​的错。

对此有什么解释吗?

最佳答案

这是因为 apply返回一个按列定义的矩阵,并且您正在遍历行。
apply的第一次申请呈现每一行,然后是结果中的一列。

功能介绍 print显示传递给 rev 的内容在每次迭代中:

 x <- apply(m, 1, print)
[1] 1 3 5 7
[1] 2 4 6 8

也就是说,每次调用 print 都会传递一个向量。两个电话,和 c(1,3,5,7)c(2,4,6,8)正在传递给函数。

扭转这些给出 c(7,5,3,1)c(8,6,4,2) ,然后这些用作返回矩阵的列,给出您看到的结果。

关于r - R 中意外的应用函数行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21729310/

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