R match.fun看不到导入包中的函数

时间:2017-01-29 07:20:27

标签: r function match

我已导入名为" stabledist"的软件包。它包括功能" rstable"

当我这样做时

my_fun <- function(function_from_library)
{
  function_from_library <- match.fun(function_from_library)
  print(some_data <- function_from_library)
}

my_fun (5, rstable(5, alpha = 1.7, beta = 0, gamma = 1.0, delta = 1.0))

我收到错误:&#34; match.fun(some_distr)出错:&rs; rstable(5,alpha = 1.7,beta = 0,gamma = 1,delta = 1)&#39;不是函数,字符或符号&#34;

一切正常,当match.fun被删除。反正导入库是否可以被其他人看到?或者我可以跳过match.fun?

1 个答案:

答案 0 :(得分:1)

这就是我实施建议的方式:

 library(stabledist )
 my_fun <- function(function_from_library, ...)
 {
   function_from_library <- match.fun(function_from_library)
   print(some_data <- function_from_library(...))
 }

 my_fun ( rstable, 5, alpha = 1.7, beta = 0, gamma = 1.0, delta = 1.0)
#[1]  1.4600308688 -0.0004999279  1.9301805374 -1.3276383194  0.9137183709

它还需要知道如何使用省略号机制将任意长度的列表传递给Roland另外评论过的函数。打印机制实际上不会创建值的数据向量。要做到这一点,你需要分配("<-")结果&#34;外面&#34;函数体(因此也不需要print()调用)。

 library(stabledist )
 my_fun <- function(function_from_library, ...)
 {
   function_from_library <- match.fun(function_from_library)
   function_from_library(...)     }

 some_data <- my_fun ( rstable, 5, alpha = 1.7, beta = 0, gamma = 1.0, delta = 1.0)
 some_data
 # 5 random values are printed at console.