【问题标题】:R: Execute a certain function based on position of a minimum in a matrixR:根据矩阵中最小值的位置执行某个函数
【发布时间】:2017-05-26 15:48:40
【问题描述】:

我有 4 个函数 func1(x), ..., func4(x) 和一个大小为 2x2 的矩阵 M。现在我想根据M 中最小值的位置计算某个函数值(比如x=1)。
如果M的最小值是M[1,1],我想得到func1(1)
如果M的最小值是M[2,1],我想得到func2(1)
如果M的最小值是M[1,2],我想得到func3(1)
如果M的最小值是M[2,2],我想得到func4(1)

在没有长 ifelse 子句的情况下,这在 R 中是否可能?

【问题讨论】:

标签: r function matrix


【解决方案1】:

这里有一些可能性:

1) 索引 如果M 是您的矩阵——确保它是矩阵而不是data.frame——那么:

func <- list(func1, func2, func3, func4)[[which.min(M)]]
func(1)

2) 切换 另一种可能是:

func <- switch(which.min(M), func1, func2, func3, func4)
func(1)

3) 粘贴 如果函数的命名如题中那样,那么我们可以动态构造函数名并调用它:

func_name <- paste0("func", which.min(M))
func <- match.fun(func_name)
func(1)

3a)

func_name <- paste0("func", which.min(M))
do.call(func_name, list(1))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-22
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    相关资源
    最近更新 更多