Установка максимального количества знаков в номере - PullRequest
1 голос
/ 05 августа 2020

Я хочу, чтобы число соответствовало максимальному количеству символов. например, возьмем значение 517.1918

Я хочу установить это максимальное количество символов равным трем, тогда оно должно дать mu только 517 (только три первых символа)

Моя работа на данный момент

Я пробовал так разбить свой номер на части: первая содержит три первых числа, а вторая - оставшиеся числа с помощью следующего кода:

d_convert<-function(x){
  x<-sub('(.{3})(.{2})', '\\1', x)
  x
}
d_convert(12345) 

И это работает, но я Не знаю, как мне поставить вместо (. {2}) длину (x) -3. Я пробовал печатать (вставить ()), но это не сработало. Есть ли простой способ, как это сделать?

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Не уверен, понял ли я, что хочу, но вы можете попробовать это:

d_convert2 <-function(x, digits=3){
  x <- gsub("\\D", "", x)
  num_string <- strsplit(x, "")[[1]]
  out <- list(digits = num_string[1L:digits], renaming = num_string[(digits+1):length(num_string)])
  out <- lapply(out, paste0, collapse="")
  return(out)
}


> d_convert2(12345)
$digits
[1] "123"

$renaming
[1] "45"

> d_convert2("1,234.5")
$digits
[1] "1" "2" "3"

$renaming
[1] "4" "5"
1 голос
/ 05 августа 2020

Попробуйте использовать signif, который округляет число до заданного количества значащих цифр.

> signif(517.1918, 3)
[1] 517
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...