将参数传递给从 R 中的字符串调用的用户定义函数的最佳方法是啥?

Posted

技术标签:

【中文标题】将参数传递给从 R 中的字符串调用的用户定义函数的最佳方法是啥?【英文标题】:What is the best way to pass arguments to user defined function called from a string in R?将参数传递给从 R 中的字符串调用的用户定义函数的最佳方法是什么? 【发布时间】:2020-03-18 05:59:17 【问题描述】:

我觉得这真的很简单,我只是缺少一个简单的功能。我的环境中有用户定义的函数。 OpenWeakStrong

我的代码中有一个变量,它根据条件选择这些函数之一来运行。

Fun_Sel<-case_when(TP < 6 ~ "Pass",
                   6  <= TP & TP <= 11 ~ "Weak",
                   12 <= TP & TP <= 12 ~ "Rule22",
                   13 <= TP & TP <= 21 ~ "Open",
                   TP >= 22 ~ "Strong")

当我在Fun_Sel 上使用内置的get函数时,我得到了

get(Fun_Sel)
function(df)

  if( 15 <= as.numeric(df[2]) & as.numeric(df[2]) <= 17 & df[4] == "Bal")....

使用eval(parse(text=Fun_Sel)) 给我同样的问题

如何传递参数并运行函数,而不是在函数本身的控制台中打印出来?

【问题讨论】:

试试get(Fun_Sel)() 【参考方案1】:

我同意,使用 get() 获取 Fun_Sel 只会返回函数对象本身。这就是它正在打印在控制台上。事实上,您将 () 放在激活它并进行函数调用的函数之后。您可以在 () 中包含所需的参数。

get(Fun_Sel)(par1, par2, etc)

【讨论】:

非常感谢。我知道这很简单

以上是关于将参数传递给从 R 中的字符串调用的用户定义函数的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

将字符串参数传递给 PROC

EF:从 C# 将表值参数传递给用户定义的函数

如何在一个条目中将RGB作为单独的参数传递给函数

我试图将一个非可变整数参数从一个函数传递给其他定义的函数;我的错误是啥?

从Oracle PLSQL调用java时如何将参数传递给java

从 Swift 将文件作为参数传递给 C++ 方法