将 dbGetQuery 设置为 return integer64 作为整数
Set dbGetQuery to return integer64 as integer
默认情况下,当我使用 DBI
包中的 dbGetQuery()
时,它 returns 类型 integer64
的列作为 integer64
class的 bit64
。
然后我使用 dplyr
来尝试过滤和操作我的结果,但遇到了问题,因为 dplyr
不支持 integer64
.
类型的对象
是否可以将 dbGetQuery()
到 return integer64
列设置为 class integer
?
即使没有完全支持 64 位整数(请参阅 GitHub issue),您仍然可以使用 dplyr 改变 integer64
:
library(dplyr, warn.conflicts = FALSE)
df <- data_frame(a = bit64::as.integer64(1:3), b = 1:3, c = 1.5:4)
df
#> # A tibble: 3 x 3
#> a b c
#> <S3: integer64> <int> <dbl>
#> 1 1 1 1.5
#> 2 2 2 2.5
#> 3 3 3 3.5
df %>% mutate_if(bit64::is.integer64, as.integer)
#> # A tibble: 3 x 3
#> a b c
#> <int> <int> <dbl>
#> 1 1 1 1.5
#> 2 2 2 2.5
#> 3 3 3 3.5
DBI 规范通过 bigint
参数提供此功能。驱动程序之间的支持显然会有所不同。
dbConnect(drv, bigint="integer", ...)
以下值的行为如下:
"integer": always return as integer, silently overflow
"numeric": always return as numeric, silently round
"character": always return the decimal representation as character
"integer64": return as a data type that can be coerced using as.integer()
(with warning on overflow), as.numeric() and as.character()
来源:
https://cran.r-project.org/web/packages/DBI/vignettes/spec.html#_specification_17
默认情况下,当我使用 DBI
包中的 dbGetQuery()
时,它 returns 类型 integer64
的列作为 integer64
class的 bit64
。
然后我使用 dplyr
来尝试过滤和操作我的结果,但遇到了问题,因为 dplyr
不支持 integer64
.
是否可以将 dbGetQuery()
到 return integer64
列设置为 class integer
?
即使没有完全支持 64 位整数(请参阅 GitHub issue),您仍然可以使用 dplyr 改变 integer64
:
library(dplyr, warn.conflicts = FALSE)
df <- data_frame(a = bit64::as.integer64(1:3), b = 1:3, c = 1.5:4)
df
#> # A tibble: 3 x 3
#> a b c
#> <S3: integer64> <int> <dbl>
#> 1 1 1 1.5
#> 2 2 2 2.5
#> 3 3 3 3.5
df %>% mutate_if(bit64::is.integer64, as.integer)
#> # A tibble: 3 x 3
#> a b c
#> <int> <int> <dbl>
#> 1 1 1 1.5
#> 2 2 2 2.5
#> 3 3 3 3.5
DBI 规范通过 bigint
参数提供此功能。驱动程序之间的支持显然会有所不同。
dbConnect(drv, bigint="integer", ...)
以下值的行为如下:
"integer": always return as integer, silently overflow
"numeric": always return as numeric, silently round
"character": always return the decimal representation as character
"integer64": return as a data type that can be coerced using as.integer() (with warning on overflow), as.numeric() and as.character()
来源: https://cran.r-project.org/web/packages/DBI/vignettes/spec.html#_specification_17