将函数应用于数据帧中的sapply时出错

时间:2015-03-11 20:54:45

标签: r function dataframe apply sapply

我正在尝试使用现有的外部函数来更新数据框中的列。该函数独立地计算值,我在使用sapply应用函数之前检查了df是否正确填充了值。也许我应该使用lapply(也不起作用)。我收到以下错误: function (....)不是函数,字符或符号。

我已经粘贴了我的代码 - 很长一段时间,因为有3个函数嵌入到我正在尝试使用的那个(粘贴在最后)。我很擅长申请家庭,所以我猜这是一个简单的问题....

cvVals <- seq(0.1,2,length.out=10)
mVals <- seq(1,2,length.out=10)
zpVals <- seq(0.001,0.10,length.out=10)
rpVals<-0

#iterate through time (up to 5000 yrs)
imax<-5000

#fill a matrix with each combination of cv, m, q values
newdf <- data.frame(expand.grid(cv=cvVals, m=mVals, zp=zpVals,rp=rpVals))

#I want to put the result from Tlalt into the rp column for each combination of Cv,m,zp
rps<-sapply(newdf,T1alt(newdf$zp,newdf$cv,newdf$m,imax))

#this looks wrong
df$rp<-rps

运行此代码所需的函数

p <- function(zp, Cv, M, t) {
  p_exceed <- pnorm(qnorm(zp,lower.tail=FALSE) * sigma_y(Cv), beta(M) * t, sigma_y(Cv),lower.tail=FALSE)
  return (p_exceed)
}
sigma_y <- function(Cv) {
      stdev_y <- sqrt(log(1+Cv^2))
      return (stdev_y)
}
beta <- function(M) {
  b_slope <- log(M) / 10
  return (b_slope)
}

T1alt <- function(zp,Cv,M,tmax){
 A<-0 
 for (i in 1:tmax) {

    q_t <- prod(1 - p(zp, Cv, M, seq(1:(i-1))))
    A = A + q_t
  }
  nonstatT<-1+A
  return(nonstatT)
}

谢谢!

0 个答案:

没有答案