【发布时间】:2015-10-30 13:27:01
【问题描述】:
我有以下数据框
GRATE GSHAPE
1 0.04 1.0
2 0.08 0.5
3 0.12 2.0
我想通过以下函数计算一个新列 COL
myfun = function (Rmax=150, precision=0.1, grate, gshape){
s = seq(0,Rmax,precision)
R = pgamma(s, rate=grate, shape=gshape)
Rc = 1-R
Rc2 = Rc^2
Rc2ds = Rc2*precision
intRc2ds = sum(Rc2ds, na.rm=TRUE)
return(intRc2ds)
}
这不能正常工作:
mydf$COL = apply(mydf, 2, myfun, grate=mydf$GRATE, gshape=mydf$GSHAPE)
我应该怎么做?
【问题讨论】:
-
我没有看到你的函数做了什么,但你实际上是在使用向量。然后您需要使用 1 作为边距而不是 2 的 apply,并且在调用 apply 中将一行作为“向量”,将此向量的第一个和第二个参数用作 grate 和 gshape