R:基于矩阵中最小值的位置执行某个函数

时间:2017-05-26 15:48:40

标签: r function matrix

我有4个函数func1(x), ..., func4(x)和一个大小为2x2的矩阵M。现在我想根据x=1中最小值的位置计算某个函数值(比如M)。
如果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子句的情况下,这在某种程度上是否可能?

1 个答案:

答案 0 :(得分: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))