Как избежать округления чисел при использовании as.numeri c () в R? - PullRequest
1 голос
/ 07 января 2020

Я читаю хорошо структурированные текстовые данные в R, и в процессе преобразования из символа в число c числа теряют свои десятичные разряды.

Я пытался использовать round(digits = 2), но это не сработало, так как мне сначала пришлось применить as.numeric. В какой-то момент я настроил options(digits = 2) до преобразования, но он тоже не сработал.

В конечном счете, я хотел получить data.frame с его номерами, точно такими же, как те, которые видны как персонажи.

Я искал здесь помощь и нашел ответы вроде это , это и это ; однако, никто не помог мне решить эту проблему.

Как предотвратить округление чисел при преобразовании символов в числа c?

Вот воспроизводимый фрагмент кода, который я написал.

library(purrr)
my_char = c("      246.00    222.22    197.98    135.10    101.50     86.45
            72.17     62.11     64.94     76.62    109.33    177.80")

# Break characters between spaces
my_char = strsplit(my_char, "\\s+")

head(my_char, n = 2)
#> [[1]]
#>  [1] ""       "246.00" "222.22" "197.98" "135.10" "101.50" "86.45" 
#>  [8] "72.17"  "62.11"  "64.94"  "76.62"  "109.33" "177.80"

# Convert from characters to numeric.
my_char = map_dfc(my_char, as.numeric)


head(my_char, n = 2)
#> # A tibble: 2 x 1
#>      V1
#>   <dbl>
#> 1    NA
#> 2   246

# Delete first value because it's empty
my_char = my_char[-1,1]

head(my_char, n = 2)
#> # A tibble: 2 x 1
#>      V1
#>   <dbl>
#> 1  246 
#> 2  222.

1 Ответ

3 голосов
/ 07 января 2020

Вот как R визуализирует данные в виде таблицы.

Функция map_dfc не округляет ваши данные, это просто способ R использовать для отображения данных в tibble.

Если вы хотите напечатать данные в обычном формате, используйте as.data.frame, например:

head(as.data.frame(my_char), n = 4)
       V1
#>1  246.00
#>2  222.22
#>3  197.98
#>4  135.10

Показывает, что ваши данные не были округлены.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...