在R中声明动态变量

时间:2013-05-28 01:34:32

标签: r

我在R中创建了一个看起来像这样的函数

calcBMI <- function (w,f,i,bmi,h) {

  w <- 204

  f <- 6

  i <- 1

  h <- f * 12 + I

  bmi <- (w / (h * h)) * 703

  return(bmi)

}

#Call Function
calcBMI()

一切运行良好

我的问题是如何使用新值w或new f

调用此函数

Evrytime我做了

w <- 254

calcBMI()

我得到了旧值

谢谢, Oded Dror

2 个答案:

答案 0 :(得分:4)

你不断获得旧值,因为每次你调用calcBMI里面的代码

w <- 204
f <- 6
# ... etc

被重新执行,因此您的BMI计算使用这些值。

你应该做的是设置你想要改变的值,作为函数中的参数,然后中传递这些值。

即:

calcBMI <- function (w, f, i) {
  h <- f * 12 + i # <-- note: in your original post this was 'I' which is not defined?    
  bmi <- (w / (h * h)) * 703   
  return(bmi)    
}

然后您调用 calcBMI,其值为wfi

calcBMI(w=204, f=6, i=1) ## 26.91162
calcBMI(w=254, f=6, i=1) ## 33.5076
# and so on ...

通过这种方式,BMI计算从参数值中获取wfi的值。

(您最初有bmih作为输入参数;我删除了它们,因为它们是从wfi计算出来的,未指定由用户作为BMI计算的输入。)

答案 1 :(得分:4)

我建议:

calcBMI <- function (w=204,f=6,i=1) {
  h <- f * 12 + i  ## note R is case sensitive: i != I
  w / h^2 * 703    ## value of last expression gets returned
}

然后:

calcBMI()  ## use default values
calcBMI(w=254)

这是家庭作业吗?