我正在运行这样的东西:(抱歉,它不是 100% 可重现的,除非你的机器上运行了 postgres,创建了 mydb 和表,以及给定的用户和密码)
library(RPostgreSQL)
library(tidyverse)
library(dbplyr)
pg_conn <- RPostgreSQL::dbConnect(
drv = "PostgreSQL", dbname = "mydb",
user = "postgres", password = "postgres"
)
table1_pg <- dplyr::tbl(pg_conn, "table1")
table2_pg <- dplyr::tbl(pg_conn, "table2")
table_join <- table1_pg %>%
left_join(table2_pg, by = c("x" = "x"))
我收到以下错误:
Error in nlevels(object) : argument "object" is missing, with no default
而且我不知道发生了什么(我 100% 确定表存在并且每个表都有 x 列;我可以使用tbl
sql 或直接发送 sql来查询它们RPostgreSQL::dbGetQuery
)。
我用谷歌搜索了这个问题并搜索了 GitHub 和 SO,但我没有找到解决方案,也没有人报告这个问题。我发现最接近的是这个left_join
重复连接变量的问题。我在那里尝试了@hadley 的 dx 示例SQLite
,但是在我的机器上可以正常工作,所以也许这是一个 postgres 特定的问题?
这是我的sessionInfo()
> sessionInfo()
R version 3.4.0 (2017-04-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] dbplyr_1.0.0 dplyr_0.7.1 purrr_0.2.2.2 readr_1.1.1 tidyr_0.6.3 tibble_1.3.3
[7] ggplot2_2.2.1 tidyverse_1.1.1 RPostgreSQL_0.4-1 DBI_0.6-1
loaded via a namespace (and not attached):
[1] Rcpp_0.12.11 cellranger_1.1.0 compiler_3.4.0 plyr_1.8.4 bindr_0.1 forcats_0.2.0 tools_3.4.0
[8] lubridate_1.6.0 jsonlite_1.5 nlme_3.1-131 gtable_0.2.0 lattice_0.20-35 pkgconfig_2.0.1 rlang_0.1.1
[15] psych_1.7.5 parallel_3.4.0 haven_1.0.0 bindrcpp_0.2 xml2_1.1.1 httr_1.2.1 stringr_1.2.0
[22] hms_0.3 grid_3.4.0 glue_1.1.1 R6_2.2.1 readxl_1.0.0 foreign_0.8-68 modelr_0.1.0
[29] reshape2_1.4.2 magrittr_1.5 scales_0.4.1 rvest_0.3.2 assertthat_0.2.0 mnormt_1.5-5 colorspace_1.3-2
[36] stringi_1.1.5 lazyeval_0.2.0 munsell_0.4.3 broom_0.4.2