是否有dplyr
(或其他包)命令用于获取列(字段)?SQL表的类型?例如...
library(RSQLite)
library(dplyr)
data(iris)
dat_sql <- src_sqlite("test.sqlite", create = TRUE)
copy_to(dat_sql, iris, name = "iris_df")
iris_tbl <- tbl(dat_sql, "iris_df")
iris_tbl
# Source: query [?? x 5]
# Database: sqlite 3.8.6 [test.sqlite]
#
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# <dbl> <dbl> <dbl> <dbl> <chr>
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3.0 1.4 0.2 setosa
# 3 4.7 3.2 1.3 0.2 setosa
# 4 4.6 3.1 1.5 0.2 setosa
# 5 5.0 3.6 1.4 0.2 setosa
# 6 5.4 3.9 1.7 0.4 setosa
# 7 4.6 3.4 1.4 0.3 setosa
# 8 5.0 3.4 1.5 0.2 setosa
# 9 4.4 2.9 1.4 0.2 setosa
# 10 4.9 3.1 1.5 0.1 setosa
# # ... with more rows
我对一个命令感兴趣,它会告诉我前四列的类型是dbl
,最后一列是chr
(或者更好的是,R类型是numeric
和character
)*,而实际上 * collect
*ing内存中的数据 *。既然是打印出来的,那就一定有办法,对吧?我试过str
,但没有成功:
str(iris_tbl)
# List of 2
# $ src:List of 2
# ..$ con :Formal class 'SQLiteConnection' [package "RSQLite"] with 5 slots
# .. .. ..@ Id :<externalptr>
# .. .. ..@ dbname : chr "test.sqlite"
# .. .. ..@ loadable.extensions: logi TRUE
# .. .. ..@ flags : int 6
# .. .. ..@ vfs : chr ""
# ..$ path: chr "test.sqlite"
# ..- attr(*, "class")= chr [1:3] "src_sqlite" "src_sql" "src"
# $ ops:List of 3
# ..$ src :List of 2
# .. ..$ con :Formal class 'SQLiteConnection' [package "RSQLite"] with 5 slots
# .. .. .. ..@ Id :<externalptr>
# .. .. .. ..@ dbname : chr "test.sqlite"
# .. .. .. ..@ loadable.extensions: logi TRUE
# .. .. .. ..@ flags : int 6
# .. .. .. ..@ vfs : chr ""
# .. ..$ path: chr "test.sqlite"
# .. ..- attr(*, "class")= chr [1:3] "src_sqlite" "src_sql" "src"
# ..$ x :Classes 'ident', 'sql', 'character' chr "iris_df"
# ..$ vars: chr [1:5] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" ...
# ..- attr(*, "class")= chr [1:3] "op_base_remote" "op_base" "op"
# - attr(*, "class")= chr [1:4] "tbl_sqlite" "tbl_sql" "tbl_lazy" "tbl"
# NULL
2条答案
按热度按时间fhg3lkii1#
当打印远程表的预览时,看起来dmgr确实在表的前几行使用了
collect()
。因为dapr检索一些示例数据,所以您也可以这样做。在这里,我们使用
head()
,collect()
查询前几行的查询结果,并检查每列的类。(When与 Dataframe 一起使用时,
lapply()
执行列式函数应用,因此它将class()
应用于每一列。)要获取dapr使用的类型名称,请使用
type_sum()
。wljmcqd82#
查看
glimpse()
这就像是一个print的转置版本:列在页面上运行,数据在页面上运行。这样就可以查看数据框中的每一列。这有点像str应用于 Dataframe ,但它试图显示尽可能多的数据。(它始终显示底层数据,即使应用于远程数据源。)
其给出:
如果你想得到一个向量,你可以这样做:
其给出: