Я не уверен, что это то, что вы ищете, в противном случае, скажите, пожалуйста, каков ваш ожидаемый результат.
cnt <- Map(function(x) sum(as.numeric(x)>20),
regmatches(r <- unlist(regmatches(s,gregexpr("(?<=\\|).*?(?=\\|)",s,perl = TRUE))),
gregexpr("\\d+\\.?\\d+?",r)))
такой, что
> cnt
[[1]]
[1] 1
[[2]]
[1] 1
[[3]]
[1] 0
[[4]]
[1] 1
[[5]]
[1] 1
ДАННЫЕ
s <- "0|294|314|20|314|SC5GSC12ASG266T|1428.0"