Здесь нам нужно разделить «диапазон1» (если это класс factor
, преобразовать в character
, поскольку strsplit
требуется вводить как character
вектор), выполнить цикл вывода list
из strsplit
с lapply/sapply
, преобразуйте элементы в numeric
sapply(strsplit(as.character(temp$range1), ":"), as.numeric)
здесь, range
также не требуется, если seq
находится с 1-го по 2-й элемент, так как мы без необходимости принимаемseq
uence, а затем получите range
Если мы сравниваем со вторым столбцом, одним из вариантов после разбиения на ;
будет сравнение (>
, <
), чтобы проверить, находится ли «число» между «диапазонами» или нет)
tmp1 <- read.table(text = as.character(temp$range1),sep=":", header = FALSE)
with(tmp1, temp$number1 > tmp1$V1 & temp$number < tmp1$V2)
С tidyverse
, опция будет
library(dplyr)
library(tidyr)
temp %>%
separate(range1, into = c('low', 'high'), sep=":",
convert = TRUE, remove = FALSE) %>%
mutate(flag = number1 > low & number1 < high)