¿Cuál es la manera rápida de determinar qué puntos de datos se encuentran por encima de una línea multifragmentada predefinida?
Necesito escanear casi un millón de puntos de datos y determinar si están por encima o por debajo de un umbral. Tengo el umbral definido globalmente y tengo una función predefinida simple que llamo con mapply, que escribirá una columna de bandera 0/1 en mi dataframe. Esto es bastante sencillo, puedo marcar docenas de señales con sus respectivos umbrales de esta manera en un segundo dataframe grande. Ahora me pidieron que hiciera un umbral más complejo que tenga la forma de una línea multifragmentada. ¿Cuál es la forma más rápida de marcar los puntos de datos dados que solo tienen visibles los puntos de esquina de la línea multifragmentada? Hasta ahora tenía un umbral predefinido (gris 0.2) y usé mapply para escanear la señal dibujada en el eje x. Simplemente usé una función para devolver 0 o 1 si el punto de datos era más pequeño o más grande que el umbral. Ahora necesito una línea multifragmentada como la dibujada en rojo para hacer el mismo trabajo.
davy.ai
Para marcar puntos de datos basados en una línea segmentada múltiple, se puede utilizar la función
segments
para dibujar los segmentos de línea y luego la funciónpoint.in.polygon
del paquetesp
para determinar si un punto de datos se encuentra dentro del polígono definido por los segmentos de línea. Aquí está un código de ejemplo:La función
is.point.in.poly
comprueba si un punto de datos dado se encuentra dentro del polígono definido porpoly
. La funciónpoint.in.polygon
aplica esta función a cada punto de datos en el marco de datos usandomapply
, devolviendo un vector de banderas que indican si cada punto de datos se encuentra dentro del polígono o no.