嵌套列表/unnest_wider:逗号后丢失数字?
nested lists / unnest_wider: losing digits after comma?
我正在下载一个 json 文件,其中包含列表格式的坐标(墨卡托格式)。
当我打开结果 dataframe/tibble 时,我可以看到坐标有小数位(逗号后的数字,例如 .4、.58)。看截图。
当我打印列表时,小数位丢失了。在取消嵌套列表时它们也会丢失 (tidyr::unnest_wider)。知道这里发生了什么吗?我不明白为什么我看不到逗号后的数字。非常感谢。
library(tidyverse)
library(jsonlite)
#>
#> Attaching package: 'jsonlite'
#> The following object is masked from 'package:purrr':
#>
#> flatten
data_link <- "https://www.statistik.at/gs-atlas/ATLAS_SCHULE_WFS/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=ATLAS_SCHULE_WFS:ATLAS_SCHULE&outputFormat=application%2Fjson&srsname=EPSG:3857&"
df <- jsonlite::fromJSON(data_link, flatten=TRUE) %>%
pluck("features") %>% #extract nested list with data on schools
select(id, geometry.coordinates) %>%
as_tibble()
class(df$geometry.coordinates)
#> [1] "list"
head(df$geometry.coordinates)
#> [[1]]
#> [1] 1816122 6131866
#>
#> [[2]]
#> [1] 1819987 6131752
#>
#> [[3]]
#> [1] 1808519 6129276
#>
#> [[4]]
#> [1] 1810436 6132934
#>
#> [[5]]
#> [1] 1834892 6142691
#>
#> [[6]]
#> [1] 1830091 6147081
df %>%
head() %>%
mutate(geometry.coordinates=map(geometry.coordinates, set_names, c("long", "lat"))) %>%
unnest_wider(col = c("geometry.coordinates"))
#> # A tibble: 6 x 3
#> id long lat
#> <chr> <dbl> <dbl>
#> 1 ATLAS_SCHULE.fid--3c550d5d_1702f69fdc2_2a59 1816122. 6131866.
#> 2 ATLAS_SCHULE.fid--3c550d5d_1702f69fdc2_2a5a 1819987. 6131752.
#> 3 ATLAS_SCHULE.fid--3c550d5d_1702f69fdc2_2a5b 1808518. 6129276.
#> 4 ATLAS_SCHULE.fid--3c550d5d_1702f69fdc2_2a5c 1810436. 6132934.
#> 5 ATLAS_SCHULE.fid--3c550d5d_1702f69fdc2_2a5d 1834892. 6142691.
#> 6 ATLAS_SCHULE.fid--3c550d5d_1702f69fdc2_2a5e 1830091. 6147081.
由 reprex package (v0.3.0)
于 2020 年 2 月 10 日创建
这更像是一个显示问题,可以使用 options
解决
library(dplyr)
library(tidyr)
options(digits = 12) #Or any higher number
df$geometry.coordinates[[1]]
#[1] 1816122.40 6131865.58
要显示小标题,请使用
options(pillar.sigfig = 12) #Or any higher number
df %>%
head() %>%
mutate(geometry.coordinates=map(geometry.coordinates, set_names, c("long", "lat"))) %>%
unnest_wider(col = c("geometry.coordinates"))
# id long lat
# <chr> <dbl> <dbl>
#1 ATLAS_SCHULE.fid--3c550d5d_1702f7f16a0_-70d8 1816122.4 6131865.58
#2 ATLAS_SCHULE.fid--3c550d5d_1702f7f16a0_-70d7 1819987.4 6131752.22
#3 ATLAS_SCHULE.fid--3c550d5d_1702f7f16a0_-70d6 1808518.5 6129276.28
#4 ATLAS_SCHULE.fid--3c550d5d_1702f7f16a0_-70d5 1810435.84 6132934.36
#5 ATLAS_SCHULE.fid--3c550d5d_1702f7f16a0_-70d4 1834891.98 6142690.97
#6 ATLAS_SCHULE.fid--3c550d5d_1702f7f16a0_-70d3 1830091.28 6147080.61
我正在下载一个 json 文件,其中包含列表格式的坐标(墨卡托格式)。 当我打开结果 dataframe/tibble 时,我可以看到坐标有小数位(逗号后的数字,例如 .4、.58)。看截图。
当我打印列表时,小数位丢失了。在取消嵌套列表时它们也会丢失 (tidyr::unnest_wider)。知道这里发生了什么吗?我不明白为什么我看不到逗号后的数字。非常感谢。
library(tidyverse)
library(jsonlite)
#>
#> Attaching package: 'jsonlite'
#> The following object is masked from 'package:purrr':
#>
#> flatten
data_link <- "https://www.statistik.at/gs-atlas/ATLAS_SCHULE_WFS/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=ATLAS_SCHULE_WFS:ATLAS_SCHULE&outputFormat=application%2Fjson&srsname=EPSG:3857&"
df <- jsonlite::fromJSON(data_link, flatten=TRUE) %>%
pluck("features") %>% #extract nested list with data on schools
select(id, geometry.coordinates) %>%
as_tibble()
class(df$geometry.coordinates)
#> [1] "list"
head(df$geometry.coordinates)
#> [[1]]
#> [1] 1816122 6131866
#>
#> [[2]]
#> [1] 1819987 6131752
#>
#> [[3]]
#> [1] 1808519 6129276
#>
#> [[4]]
#> [1] 1810436 6132934
#>
#> [[5]]
#> [1] 1834892 6142691
#>
#> [[6]]
#> [1] 1830091 6147081
df %>%
head() %>%
mutate(geometry.coordinates=map(geometry.coordinates, set_names, c("long", "lat"))) %>%
unnest_wider(col = c("geometry.coordinates"))
#> # A tibble: 6 x 3
#> id long lat
#> <chr> <dbl> <dbl>
#> 1 ATLAS_SCHULE.fid--3c550d5d_1702f69fdc2_2a59 1816122. 6131866.
#> 2 ATLAS_SCHULE.fid--3c550d5d_1702f69fdc2_2a5a 1819987. 6131752.
#> 3 ATLAS_SCHULE.fid--3c550d5d_1702f69fdc2_2a5b 1808518. 6129276.
#> 4 ATLAS_SCHULE.fid--3c550d5d_1702f69fdc2_2a5c 1810436. 6132934.
#> 5 ATLAS_SCHULE.fid--3c550d5d_1702f69fdc2_2a5d 1834892. 6142691.
#> 6 ATLAS_SCHULE.fid--3c550d5d_1702f69fdc2_2a5e 1830091. 6147081.
由 reprex package (v0.3.0)
于 2020 年 2 月 10 日创建这更像是一个显示问题,可以使用 options
library(dplyr)
library(tidyr)
options(digits = 12) #Or any higher number
df$geometry.coordinates[[1]]
#[1] 1816122.40 6131865.58
要显示小标题,请使用
options(pillar.sigfig = 12) #Or any higher number
df %>%
head() %>%
mutate(geometry.coordinates=map(geometry.coordinates, set_names, c("long", "lat"))) %>%
unnest_wider(col = c("geometry.coordinates"))
# id long lat
# <chr> <dbl> <dbl>
#1 ATLAS_SCHULE.fid--3c550d5d_1702f7f16a0_-70d8 1816122.4 6131865.58
#2 ATLAS_SCHULE.fid--3c550d5d_1702f7f16a0_-70d7 1819987.4 6131752.22
#3 ATLAS_SCHULE.fid--3c550d5d_1702f7f16a0_-70d6 1808518.5 6129276.28
#4 ATLAS_SCHULE.fid--3c550d5d_1702f7f16a0_-70d5 1810435.84 6132934.36
#5 ATLAS_SCHULE.fid--3c550d5d_1702f7f16a0_-70d4 1834891.98 6142690.97
#6 ATLAS_SCHULE.fid--3c550d5d_1702f7f16a0_-70d3 1830091.28 6147080.61