Если это фрейм данных, мы можем использовать lapply
и заменить значения, соответствующие регулярному выражению, пустым пробелом.
df[] <- lapply(df, function(x) replace(x, !grepl("\\.", x), ""))
df
# V1 V2 V3 V4
#1 123.45 123.98
#2 569.78 234.98 2347.1 898.11
#3 598.1
Если это вектор, подход регулярного выражения может использовать grep
и соответствовать точному "." в нем.
grep("\\.", x, value= T)
#[1] "123.45" "123.98" "569.78" "234.98" "2347.1" "898.11" "598.1"
Это преобразовало бы числа в символы, мы можем преобразовать их в числовые значения as.numeric
as.numeric(grep("\\.", x,value= T))
#[1] 123.45 123.98 569.78 234.98 2347.10 898.11 598.10
данные
df <- read.table(text = "1234 123.45 123.98 569.00
569.78 234.98 2347.1 898.11
689 598.1 569 781")
x <-c(1234, 123.45, 123.98, 569.00, 569.78, 234.98, 2347.1, 898.11, 689, 598.1, 569, 781)