gpt4 book ai didi

r - 将字符串转换为 R 中的函数

转载 作者:行者123 更新时间:2023-12-02 06:41:31 26 4
gpt4 key购买 nike

我在 R 中有一个 Shiny 应用程序,我希望用户能够通过在文本框中输入文本来动态创建函数。要启用此功能,我想了解以下信息:

如何将包含函数定义的字符串对象转换为实际函数,并将其绑定(bind)到变量名称?

例如:

function_code = 'function(x) { as.dist(1-cor(t(x))) }'
f = something(function_code, ...)

其中 something()function_code 转换为实际函数并将其分配给变量 f。我不认为我可以直接将 function_code 转换为函数,并且我尝试过使用 as.function 但也不起作用。

谢谢!

最佳答案

您可以使用parse()eval():

foo <- eval(parse(text = function_code))

> foo
function(x) { as.dist(1-cor(t(x))) }

只需将其包装在一个函数中即可:

parseEval <- function(text) {
eval(parse(text = text))
}

如果您需要实际的 something() 而不是直接调用。

这是一个例子:

set.seed(1)
x <- matrix(runif(20), ncol = 2)
out <- foo(x)

给予

> zapsmall(out)
1 2 3 4 5 6 7 8 9
2 0
3 2 2
4 0 0 2
5 2 2 0 2
6 0 0 2 0 2
7 0 0 2 0 2 0
8 2 2 0 2 0 2 2
9 0 0 2 0 2 0 0 2
10 2 2 0 2 0 2 2 0 2

关于r - 将字符串转换为 R 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30900026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com