如何找到与R中y最大值的一半相对应的x值?

时间:2019-11-14 10:08:48

标签: r

我试图通过找到对应于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)

我该怎么做才能获得此值,以便可以将其应用于其他情况?

1 个答案:

答案 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

有关这些功能的更多信息,请参见帮助页面