我已导入名为" 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?
答案 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.