3
返回integer64默認情況下,當我使用dbGetQuery()
從DBI
包返回integer64
類型的列作爲integer64
類bit64
的。設置dbGetQuery爲整數
然後,我使用dplyr
嘗試過濾和操縱我的結果,但由於dplyr
不支持類型爲integer64
的對象而出現問題。
是否可以設置dbGetQuery()
返回integer64
列作爲integer
類?
返回integer64默認情況下,當我使用dbGetQuery()
從DBI
包返回integer64
類型的列作爲integer64
類bit64
的。設置dbGetQuery爲整數
然後,我使用dplyr
嘗試過濾和操縱我的結果,但由於dplyr
不支持類型爲integer64
的對象而出現問題。
是否可以設置dbGetQuery()
返回integer64
列作爲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
爲什麼不直接轉換爲整數調用'dbGetQuery後()'而不是在那個階段呢? –
我覺得你三個選項是:(一)邁克爾的建議轉換爲整數後查詢; (b)在查詢中使用SQL的'CAST(... as integer32)';或(c)把它用於哪個ODBC驅動程序正在使用的問題板(也許['odbc'(https://github.com/rstats-db/odbc/issues))。我認爲後者是最適合於長期,但因爲'bit64'仍不全球使用/ R中接受,這可能是一場艱苦的戰鬥。 – r2evans
「爲什麼不直接轉換爲整數調用dbGetQuery(),而在這個階段做之後?」 這本來是整潔的使用中dbGetQuery參數或某事做,但如果有這樣做的沒有更好的辦法那麼我想我必須要 – user1165199