【发布时间】:2021-11-25 12:31:52
【问题描述】:
我需要扫描近一百万个数据点并确定它们是低于还是高于阈值。我有全局定义的阈值,我有一个简单的预定义函数
function.lower.penalty <- function(i,j){ if( i < j ){
#if gate condition is met, flip the gate flag:
n <- 1 }else{n<-0} return(n) }
我用 mapply 调用,它将在我的数据框中写入一个 0/1 标志列:
df[, paste0("outside.highpass")] <- mapply(function.lower.penalty,i="somesignal.found.in.df", j="*some.threshold.found.in.df*" )
这非常简单,我可以在第二个大数据帧中标记数十个信号及其各自的阈值。此外,考虑到阈值的编写方式,代码会将信号标记为低于/高于阈值(这意味着我还有一个 function.higher.penalty)。
现在我被要求制作一个具有多段线形状的更复杂的阈值。 鉴于您只有多段线的角点(我可以根据它们绘制线的方式猜测它们)可见here,因此标记数据点的最快方法是什么。
到目前为止,我有一个预定义的阈值(灰色 0.2)并使用 mapply 扫描在 x 轴上绘制的信号。如果数据点小于或大于阈值,我只是使用函数返回 0 或 1。现在我需要一条多段线,比如用红色绘制的那条线来完成同样的工作。
编辑:使用 det 的建议,我能够在数据框中标记数据点。但是,似乎某些靠近定义线的数据点被错误地分配,请参阅here。我想知道如何解决它或者这是一个绘图错误?
【问题讨论】: