【问题标题】:How to apply function to each 2d matrix in an array如何将函数应用于数组中的每个二维矩阵
【发布时间】:2023-04-08 21:52:02
【问题描述】:

我有一个函数,它接受一个 X*X 矩阵作为输入,并返回一个长度为 X 的向量。

我想将该函数应用于 X*X*Y 数组,并从函数中取回 X*Y 矩阵/数组的结果。

我可以将函数应用到一个矩阵

funcName(arrayName[,,1])

但我不知道如何将函数应用于每个矩阵。我确定这很简单 - 使用 apply 或 sapply 或 lapply,但我无法弄清楚。

【问题讨论】:

    标签: r matrix apply


    【解决方案1】:

    就在发布我的问题之前,我又尝试了一件事情。

    The reference material for apply 告诉您 MARGIN 参数应该设置为 1 用于行,2 用于列。我尝试了这两种方法都没有成功,但后来想尝试将 MARGIN 参数设置为 3 - 这样就成功了,并给了我想要的确切输出。

    确切地说,我做到了:

    apply(arrayName, MARGIN=3, FUN=funcName)
    

    【讨论】:

    • 这是有效的,因为 MARGIN 参数实际上只是您想要在数组中折叠的边距的向量。最常见的数组只有两个维度(用于行和列),但如果您有更高维度的数组,您也可以指定它们。您还可以一次组合多个维度:MARGIN=c(1,3) 或类似的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 2020-05-05
    相关资源
    最近更新 更多