gpt4 book ai didi

r - 从字符向量创建函数列表

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

提前致谢,如果之前已经回答过这个问题,很抱歉 - 我已经看了很多遍。我有一个包含一行连接信息的数据集,特别是:名称、颜色代码、一些函数表达式。例如,一个值可能是:

成本#FF0033@log(x)+6。

我拥有提取信息的所有代码,最终得到了一个表达式向量,我想将其转换为实际函数列表。

例如:

func.list <- list()
test.func <- c("x","x+1","x+2","x+3","x+4")

其中 test.func 是表达式的向量。我想要的是:
func.list[[3]]

相当于
function(x){x+3}

我知道我可以使用以下方法创建函数:
somefunc <- function(x){eval(parse(text="x+1"))} 

将字符值转换为函数。当我尝试循环创建多个函数时,问题就出现了。举个我尝试过但没用的例子:
for(i in 1:length(test.func)){
temp <- test.func[i]
f <- assign(function(x){eval(expr=parse(text=temp))})
func.list[[i]] <- f
}

基于另一篇文章(http://stats.stackexchange.com/questions/3836/how-to-create-a-vector-of-functions)我也试过这个:
makefunc <- function(y){y;function(x){y}}
for(i in 1:length(test.func)){
func.list[[i]] <- assign(x=paste("f",i,sep=""),value=makefunc(eval(parse(text=test.func[i]))))
}

这给出了以下错误: eval(expr, envir, enclos) 中的错误:找不到对象“x”

最终目标是获取函数列表并将第 j 个函数应用于 data.frame 的第 j 列,以便脚本用户可以指定如何规范化列标题给出的连接信息中的每一列。

最佳答案

也许使用单个通用函数初始化您的列表,然后使用以下方法更新它们:

foo <- function(x){x+3}
> body(foo) <- quote(x+4)
> foo
function (x)
x + 4

更具体地说,从角色开始,您可能会执行以下操作:
body(foo) <- parse(text = "x+5")

关于r - 从字符向量创建函数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12117223/

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