R:在用户定义函数内的数据框中创建新变量

时间:2016-05-29 07:37:58

标签: r function

我有一个带有(年龄和性别)的数据框。根据我的数据框中每条记录的年龄和性别,我想查看一个参考数据框(称为bmi)并计算一些内容并在我的数据框中创建一个新变量并为其分配计算值。以下是我的计算函数lambda

lambda <-function(ag, gnd, ibmi) {

  sel <- ibmi[ibmi$age==ag & ibmi$gender == gnd, ]
  out <- boxcox(lm(bmi~1, data = sel), data = sel)
  rn <- range(out$x[out$y > max(out$y)-qchisq(0.95,1)/2])
  (rn[1] + rn[2])/2
}

这就是我调用此函数并在数据框中创建新变量的方法

myData$L <- lambda(myData$age, myData$gender, bmi)

我将agegender和参考数据框bmi传递给函数lambda。但我得到以下警告,并针对不同年龄和性别的所有记录重复相同的答案。

Warning messages:
1: In ibmi$age == ag :
  longer object length is not a multiple of shorter object length
2: In ibmi$gender == gnd :
  longer object length is not a multiple of shorter object length

有人可以帮帮我吗。

0 个答案:

没有答案