【问题标题】:apply different functions to different elements of a vector in R将不同的函数应用于 R 中向量的不同元素
【发布时间】:2013-07-03 15:22:03
【问题描述】:

申请很简单,但这是我要破解的简而言之:

在多参数回归中,优化器用于找到参数函数的最佳拟合,例如 x1,x2 数据。通常,如果优化器尝试优化转换后的参数(例如,使用 R 优化器,例如 DEoptim、nls.lm),优化器可以更快地执行特定功能。 根据我的经验,一个参数函数对不同参数的不同转换甚至更好。

我希望将 x.trans 中的不同函数(参见下文)应用于 x.val 中不同但位置对应的元素:

一个可以使用的模拟示例。

#initialise
x.val <- rep(100,5);      EDIT: ignore this part ==>  names(x.val) <- x.names
x.select <- c(1,0,0,1,1)
x.trans <- c(log10(x),exp(x),log10(x),x^2,1/x)

#select required elements, and corresponding names
x.val = subset(x.val, x.select == 1)
x.trans = subset(x.trans, x.select == 1)

# How I tried: apply function in x.trans[i] to x.val[i]
...

有什么想法吗? (我尝试过 apply 和 sapply 但无法获取存储在 x.trans 中的函数)

【问题讨论】:

  • 这个例子并没有真正起作用,因为 x.trans 应该是一个函数,据我所知?
  • 您的示例尚未准备好运行。 xx.names 在哪里?我对你的理解正确吗?您想将x.val 分组并为每个分组应用不同的功能吗?
  • @MatthewPlourde Afaik 他想将第一个函数应用于第一个元素,将第二个函数应用于第二个元素等,取决于先前的选择。所以可能需要一个函数列表。
  • 我现在明白了,我错过了最后的评论,这很清楚。 @TobyElTejedor 看看?mapply
  • 好问题,好答案。

标签: r optimization apply


【解决方案1】:

你必须改用这个:

x.trans <- c(log10,exp,log10,function(x)x^2,function(x)1/x)

然后这个:

mapply(function(f, x) f(x), x.trans, x.val)

【讨论】:

    猜你喜欢
    • 2017-08-29
    • 2015-12-20
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 2012-12-21
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多