日期:“最后修改日期:2022年9月21日”

将包加载到R会话。它将自动加载的包dplyr而且dbplyr

库(SQLDataFrame)库(DBI)

SQLDataFrame槽

dbfile <- system.file("extdata/test.db", package = "SQLDataFrame") conn <- DBI::dbConnect(dbDriver("SQLite"), dbname = dbfile) obj <- SQLDataFrame(conn = conn, dbtable = "state",dbkey = "state") obj #> SQLDataFrame with 50 row and 4 column #> state |分区区域人口大小#> <字符> | <字符> <字符> <数字> <字符> #>阿拉巴马州|东南中部南部3615中#>阿拉斯加|太平洋西部365小#>亚利桑那州|西部山区2280中#>阿肯色州|西部南部中部南部2110中#>加州|太平洋西部21198大#> ... . ... ... ... ...#>维吉尼亚州|南大西洋南部4981中#华盛顿|西太平洋3559中#西弗吉尼亚州|南大西洋南部1799中#威斯康辛州|东中北部中北部4589中#怀俄明州|山西部376小

槽访问器

为了使SQLDataFrame对象越轻越紧凑,对象中只包含5个槽:tblData是从dbnrowsdbconcatKey索引.元数据信息可以使用插槽访问器或其他实用函数通过这5个插槽返回。

slotNames(obj) #> [1] "dbkey" "dbnrows" "tblData" "indexes" #> [5] "dbconcatKey" "elementType" "elementMetadata" "metadata" dbtable(obj) #> [1] "state" dbkey(obj) #> [1] "state"

tblData

tblDataSlot保存dbplyr: tbl_dbi数据库表的版本,它是数据库表的轻量级表示形式R.值得注意的是,这个惰性tbl只包含唯一的行。它也可以被排序是从(obj)如果SQLDataFrame对象从联盟rbind.所以当saveSQLDataFrame ()函数被调用时,一个数据库表将被写入一个物理磁盘空间并具有唯一的记录。

Accessor函数可用于此插槽:

tblData(obj) #> #来源:表<状态> [?? ?x 5] #> #数据库:sqlite 3.39.4 [/ tmp / RtmpRM3VSz / Rinst26bffd2872677e / SQLDataFrame / extdata / test.db] # >部门地区国家人口规模# > <空空的> <空空的> <空空的> <双> < >从而向# >东中南部南阿拉巴马州3615中365 # > 2阿拉斯加太平洋西部小# > 3亚利桑那州西部山区2280中等# > 4西部南部中部南部阿肯色州2110中等# > 5太平洋西部加州21198大# > 6科罗拉多西部山区2541中# > 7 3100年康涅狄格州东北部新英格兰媒体# > 8南大西洋的南特拉华州579small #> 9 South Atlantic South Florida 8277 large #> 10 South Atlantic South Georgia 4931 medium #> # … with more rows

dbnrows而且dbconcatKey

dbnrows字段对应的行数tblData,dbconcatKey控件对应的已实现键列(如果多个则连接)tblData.Accessor函数也可用于这2个插槽:

“阿拉巴马”、“阿拉斯加”、“亚利桑那”、“阿肯色州”#>[1]“加州”、“科罗拉多”、“康涅狄格”、“特拉华州”#>[9]“佛罗里达”、“乔治亚”、“夏威夷”、“爱达荷”#>[13]“伊利诺伊”、“印第安纳”、“爱荷华”、“堪萨斯州”#>[17]“肯塔基”、“路易斯安那”、“缅因州”、“马里兰州”#> b[21]“马萨诸塞州”、“密歇根州”、“明尼苏达州”、“密西西比州”#>[25]“密苏里”、“蒙大拿州”、“内布拉斯加州”、“内华达”#>[29]“新罕布什尔州”、“新泽西州”、“新墨西哥州”、“纽约州”#>[33]“北卡罗莱纳州”、“北达科他州”、“俄亥俄州”“俄克拉荷马州”“俄勒冈州”“宾夕法尼亚州”“罗得岛州”“南卡罗来纳州”“南达科他州”“田纳西州”“德克萨斯州”“犹他州”“佛蒙特州”“弗吉尼亚州”“华盛顿州”“西弗吉尼亚州”“威斯康星州”“怀俄明州”

索引

索引Slots是一个未命名的列表,分别保存对应于tblData槽,使SQLDataFrame可能有重复的行或只有数据记录的子集tblData,而tblData槽位不需要更换。的槽位保持一致dbnrows而且dbconcatKey也将保持不变。

obj@indexes #> [[1]] #> NULL #> #> [[2]] #> NULL obj_sub <- obj[sample(5,3, replace = TRUE), 2:3] obj_sub # b> SQLDataFrame with 3行2列#> state | region population #>  |   #> California | West 21198 #> California | West 21198 #> Arizona | West 2280 obj_sub@indexes #>[[1]] #>[1] 5 5 3 #> #>[[2]] #>[1] 2 3相同(tblData(obj), tblData(obj_sub)) #> [1] TRUE

与一个过滤器选择函数(类似于[我]子集),只有索引控件的行或列索引将更新tblData

obj_filter <- obj %>% filter(division == "South Atlantic" & size == "medium") obj_filter@indexes #> [[1]] #> b[1] 10 20 40 46 48 #> # b> [[2]] #> NULL same (tblData(obj), tblData(obj_filter))) #> b[1] TRUE obj_select <- obj %>% select(division, size) obj_select@indexes #> [[1]] #> NULL #> #> [[2]] #> [1] 1 4 same (tblData(obj), tblData(obj_select)) #> [1] TRUE

SQLDataFrame方法

ROWNAMES

ROWNAMES, SQLDataFrame方法返回(如果多个则连接)键列值,以便使用字符向量的行子集设置适用于SQLDataFrame对象。

rnms <- ROWNAMES(obj) obj[sample(rnms, 3),] #> SQLDataFrame with 3 row and 4 columns #> state |分区区域人口大小#> <字符> | <字符> <字符> <数字> <字符> #>田纳西州|东南部中部南部4173中#>马里兰州|南大西洋南部4122中#>纽约|中大西洋东北部18076大

SQLDataFrame具有组合键的对象:

obj1 <- SQLDataFrame(conn = conn, dbtable = "state", dbkey = c("region", "population")) ROWNAMES(obj1[1:10,]) #>[1] "南:3615.0" "西:365.0" "西:2280.0" "南:2110.0" #>[5]"西:21198.0" "西:2541.0" "东北:3100.0" "南:579.0" #>[9]"南:8277.0" "南:4931.0" obj1[c("南:3615.0","西:365.0"),#> SQLDataFrame with 2行3列#>区域人口|分区状态大小#> <字符> <数字> | <字符> <字符> <字符> #>南3615 |东南中部阿拉巴马州中型#>西365 |太平洋阿拉斯加小

SessionInfo ()

sessionInfo() #> R version 4.2.1(2022-06-23) #>平台:x86_64-pc-linux-gnu (64-bit) #>运行在:Ubuntu 20.04.5 LTS #> #>矩阵产品:默认#> BLAS: /home/biocbuild/bbs-3.16-bioc/R/lib/libRblas。所以#> LAPACK: /home/biocbuild/bbs-3.16-bio /R/lib/libRlapack。so #> #> locale: #> [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC= c# > [3] LC_TIME=en_GB LC_COLLATE= c# > [5] LC_MONETARY=en_US。utf - 8 LC_MESSAGES = en_US。UTF-8 #> [7] LC_PAPER=en_US。UTF-8 LC_NAME= c# > [9] LC_ADDRESS=C LC_TELEPHONE= c# > [11] LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION= c# > #>附加基础包:#> [1]stats4 stats graphics grDevices utils datasets methods #> b[8] base #> #>其他附加包:#> [1]DBI_1.1.3 SQLDataFrame_1.12.0 S4Vectors_0.36.0 #> [4] BiocGenerics_0.44.0 dbplyr_2.2.1 dplyr_1.0.10 # b> #>通过命名空间加载(且未附加):#> [9] memoise_2.0.1 jsonlite_1.8.3 evaluate_0.17 RSQLite_2.2.18 #> [17] lifecycle_1.0.3 tibble_3.1.8 pkgconfig_2.0.3 rlang_1.0.6 #> [17] cli_3.4.1 yaml_2.3.6 xfun_0.34 fastmap_1.1.0 #> [21] withr_2.5.0 string_1 .4.1 knitr_1.40 generics_0.1.3 #> [25] vctrs_0.5.0 sass_0.4.2 bit64_4.0.5 tidyselect_1.2.0 #> [29] glue_1.6.2 R6_2.5.1 fansi_1.0.3 rmarkdown_2.17 #> [33] purrr_0.3.5Blob_1.2.3 magrittr_2.0.3 htmltools_0.5.3 #> [37] assertthat_0.2.1 utf8_1.2.2 stringi_1.7.8 lazyeval_0.2.2 #> [41] cachem_1.0.6