Вы можете сделать это в одной строке кода с помощью as.numeric
и gsub
с подходящим регулярным выражением:
sample1 <- c(
a = "23.45.12",
b = "123.345.234",
c = "45.2311.34"
)
as.numeric(
gsub("(\\d+\\.\\d+)\\..*", "\\1", sample1)
)
[1] 23.4500 123.3450 45.2311
Регулярное выражение:
\\d*
находит одну или несколько цифр
\\.
находит период
- Таким образом,
(\\d+\\.\\d+)
находит два набора цифр с точкой между ними, а затем группирует их (в скобках)
- Наконец,
\\..*
находит период, за которым следует полный подстановочный знак
Затем gsub
заменяет всю строку только тем, что было найдено в скобках. Это называется обратной ссылкой регулярного выражения, обозначенной \\1
.