首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的目标值和for循环

R中的目标值和for循环
EN

Stack Overflow用户
提问于 2013-10-07 17:44:41
回答 1查看 219关注 0票数 0

以下是一些数据:

代码语言:javascript
复制
a <- function(a) {3*a+12*a^2}
dom1 <- seq(-1,4,0.1)
vec1 <- a(dom1)[1:10]

c <- function(c) {-5*c^2+2*c^3}
dom2 <- seq(-0.1,0.2,0.01)
vec2 <- c(dom2)[1:10]

d <- function(d) {2*d^2+5*d^3+12*d^4}
dom3 <- seq(0.1,0.5,0.01)
vec3 <- d(dom3)[1:10]

w <- function(w) {7*w-3*w^2}
dom4 <- seq(0.5,2.5,0.05)
vec4 <- w(dom4)[1:10]

现在假设我们将lm model放在更大的数据集lm(y~a+c+d+w)上,并且lm参数是c(-0.2,0.2,0.1,0.6)

代码语言:javascript
复制
fun.mean <- function(a,c,d,w) {-0.2*a+0.2*c+0.1*d+0.6*w}

我尝试过,但没有像预期的那样工作:

下面是通过相关函数(&domain)生成的向量的循环

代码语言:javascript
复制
for(a in vec1) {
 for(c in vec2) {
  for(d in vec3) {
   for(w in vec4) {
    sol <- fun.mean(a,c,d,w)
    if (sol %% 1 > 0.40 & sol < 0.50) print(c(a,c,d,w))
  }}}}

所以我要找的是c(a,c,d,w)的组合,它等于0.5,或者理想情况下等于区间0.4-0.5

因此,将c(a,c,d,w)输出与函数fun.mean相乘不会得到所需的值(区间0.4-0.5)。我哪里做错了?在给定“目标”值的情况下,是否有更好的方法来找到c(a,c,d,w)值?for loop的替代方案是什么,因为它非常慢。

EN

回答 1

Stack Overflow用户

发布于 2013-10-07 18:07:40

您使用%%1进行筛选,但在检查答案时未使用它。下面的代码返回9.00 -0.052000 0.02620000 2.7500,返回-0.15778。它符合您的标准(-0.15778 %% 1= 0.85,即> 0.4和-0.15 < 0.5)。

我想你的标准是错的,你可能应该这样做

代码语言:javascript
复制
sol %% 1 > 0.4 and sol %% 1 < 0.5

代码语言:javascript
复制
sol > 0.4 and sol < 0.5.

在第一种情况下,也许您应该在fun.mean计算中添加%% 1。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19221531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档