我正在尝试将地理纬度和经度读入R.这些地理数据通常是数字值超过6位数。 我试图用" read_excel"中的read_excel()读取excel文件。 package和基础R中的read.csv,以及" readr"中的read_csv()包。 但是,上述功能都不能正确读取这些数据而不会丢失信息。所有这些函数无一例外地只能读取截断为4或5位的数字值。 我也尝试使用"选项(数字= 8)"在读取数据之前指定默认数字,但它不起作用。 在这里,我为" readr"中的read_csv()函数创建了一个可重现的示例。包:
read_csv("112.8397456,35.50496106\n112.583984,37.8519194\n112.5826569,37.8602818", col_names = FALSE)
系统会自动截断5位数据:
# A tibble: 3 × 2
X1 X2
<dbl> <dbl>
1 112.8397 35.50496
2 112.5840 37.85192
3 112.5827 37.86028
我已经检查了stackoverflow,似乎没有提出类似的问题。任何人都可以给我一个可行的答案,如何阅读这种形式的数据与信息丢失?谢谢。 :)
答案 0 :(得分:2)
这不是readr的问题。完整的数据仍在那里 - R只是没有显示出来。使用基础R read.csv()
时会发生同样的事情:
library(tidyverse)
df.readr <- read_csv("112.8397456,35.50496106\n112.583984,37.8519194\n112.5826569,37.8602818", col_names = FALSE)
df.base <- read.csv(textConnection("112.8397456,35.50496106\n112.583984,37.8519194\n112.5826569,37.8602818"), header = FALSE)
# By default R shows 7 digits
getOption("digits")
#> [1] 7
# Both CSV files are truncated at 7 digits
df.readr
#> # A tibble: 3 × 2
#> X1 X2
#> <dbl> <dbl>
#> 1 112.8397 35.50496
#> 2 112.5840 37.85192
#> 3 112.5827 37.86028
df.base
#> V1 V2
#> 1 112.8397 35.50496
#> 2 112.5840 37.85192
#> 3 112.5827 37.86028
# Bumping up the digits shows more
options("digits" = 15)
df.readr
#> # A tibble: 3 × 2
#> X1 X2
#> <dbl> <dbl>
#> 1 112.8397456 35.50496106
#> 2 112.5839840 37.85191940
#> 3 112.5826569 37.86028180
df.base
#> V1 V2
#> 1 112.8397456 35.50496106
#> 2 112.5839840 37.85191940
#> 3 112.5826569 37.86028180