我试图通过找到对应于y变量最大值一半的时间来获得过程的半衰期,并将其应用于不同的情况。我已经尝试了R中which()的两个变体,但没有一个能给我想要的结果。
#rc and time are columns of a data.frame
time[which.max(rc)] # gives the time at rc-max, but i need the time at half rc-max
time[which(rc==max(rc)/2] #returns numeric(0)
我该怎么做才能获得此值,以便可以将其应用于其他情况?
答案 0 :(得分:1)
您可以执行以下操作...
time <- 1:10 #sample data
rc <- exp(-(1:10))
uniroot( #finds roots of functions
approxfun(time, rc - max(rc) / 2), #linear interpolation function
range(time) #range of values to check
)$root #value of time where rc=max(rc)/2
[1] 1.790988
有关这些功能的更多信息,请参见帮助页面