我有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子句的情况下,这在某种程度上是否可能?
答案 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))