gpt4 book ai didi

r - 使用 "apply"将函数应用于矩阵,其中参数是特定于列的

转载 作者:行者123 更新时间:2023-12-04 09:03:54 26 4
gpt4 key购买 nike

我试图通过使用 apply 来避免使用循环将用户定义的函数应用于矩阵。我的问题是我的函数使用了额外的参数,并且它们对于矩阵的每一列都不同。下面是一个玩具示例。

假设我有以下功能:

foo <- function(x, a, b, c) return( (a*x + b)^c )

我想将它应用于矩阵 bar使用 a 的不同值, b , 和 c对于每一列。
bar <- matrix(1:15, ncol = 3)
a <- 4:6
b <- 3:1
c <- 1:3

在这种情况下,对于 bar 的第一列,然后 a=4 , b=3 , 和 c=1 .我试过这个,
apply(bar, 2, foo, a=a, b=b, c=c)

但这显然是不正确的,因为每列在再次返回到第一个参数之前按顺序使用所有参数。有什么建议?

最佳答案

我们可以 split “栏”由“列”( col(bar) )和 mapply 组成我们可以将 'foo' 对应的 'a'、'b'、'c' 值应用到 'bar' 的每一列

mapply(foo, split(bar, col(bar)), a, b, c)

或者不使用 apply
ind <- col(bar)
(a[ind]*bar +b[ind])^c[ind]

关于r - 使用 "apply"将函数应用于矩阵,其中参数是特定于列的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30265183/

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