簡體   English   中英

R match.fun看不到導入包中的函數

[英]R match.fun does not see function from imported package

我已經導入了名為“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))

我得到錯誤:“match.fun(some_distr)中的錯誤:'rstable(5,alpha = 1.7,beta = 0,gamma = 1,delta = 1)'不是函數,字符或符號”

一切正常,當match.fun被刪除。 反正導入庫是否可以被其他人看到? 或者我可以跳過match.fun?

這是我實施我的建議的方式:

 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另外評論過的函數。 打印機制實際上不會創建值的數據向量。 為此,您需要在函數體“外部”分配( "<-" )結果(因此也不需要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.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM