我正在尝试使用现有的外部函数来更新数据框中的列。该函数独立地计算值,我在使用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)
}
谢谢!