Создать пример данных:
df <- data.frame(
test = paste0("test", 1:18),
d1 = c(rep(-57, 7), 0, rep(-99, 10)),
d2 = c(rep(-4, 14), 1, 0.1, -99, -99),
d3 = c(rep(-89, 3), 0.99, -47, 0.8, rep(-55, 8), -1.56, 0.1, 1, 0),
d4 = c(rep(-99, 6), rep(-57, 5), 0.7, -3, -13, -99, 0.98, -99, 0.99),
d5 = c(rep(-57, 2), 0.4, rep(-99, 14), -57),
stringsAsFactors = FALSE
)
Если вам просто нужно схватить элементы:
# get TRUE/FALSE matrix of whether element meets your criteria
meets_criteria <- sapply(df[,-1], function(x) x >= -0.5 & x <= 1)
# "extract" elements that meet your criteria; result is a vector
df[,-1][meets_criteria]
Если вы также хотите сохранить значения строки / столбца, связанные с элементом
(это соответствует подходу @ thelatemail в комментариях выше):
# reshape to long
dflong <- tidyr::gather(df, dvar, dvalue, d1:d5)
# subset to meet your criteria
dflong[dflong$dvalue >= -0.5 & dflong$dvalue <= 1, ]