据我了解dplyr包的片功能的帮助页面,可以选择一个SQL TBL的行或一个SQLite TBL是这样的:如何按行号提取tbl_mysql或tbl_sqlite数据框的子集?
filter(mtcars, row_number() == 1L)
不过,我得到一个错误,当我尝试:
dat1 <- data.frame(
Name = c("Joe", "Bill", "Jim", "Kate"),
Value = c(10.1, 9, 7.7, -3),
Indic = c(0L, 1L, 2L, 2L),
Status = c(TRUE, TRUE, FALSE, FALSE)
)
#### Create SQLite database ####
library(dplyr)
my_database <- src_sqlite("db_sqlite_file", create = TRUE)
#### Put data in database ####
copy_to(my_database, dat1, temporary = FALSE)
#### Connect to database ####
my_db <- src_sqlite("db_sqlite_file", create = FALSE)
#### Querying the database ####
dd <- tbl(my_db, "dat1")
ddextract <- filter(dd, row_number() == 1L)
错误消息出现在这里:
> ddextract
Source: sqlite 3.8.6 [db_sqlite_file]
Error in sqliteSendQuery(con, statement, bind.data) :
error in statement: no such function: ROW_NUMBER
与MySQL同样的问题:
my_db_sql <- src_mysql("mysql_dplyr", password="mypassword")
dd <- tbl(my_db_sql, "dat1")
ddextract <- filter(dd, row_number() == 1L)
错误:
> ddextract
Source: mysql 5.5.49-0ubuntu0.14.04.1 [[email protected]:/mysql_dplyr]
Error in .local(conn, statement, ...) :
could not run statement: FUNCTION mysql_dplyr.ROW_NUMBER does not exist
当然我可以创建与行数的新列,但我不知道为什么filter(mtcars, row_number() == 1L)
不起作用。
你尝试'dplyr ::滤波器()'? – mtoto
这是'dplyr :: filter'。 –
你也可以看看'dplyr :: slice' –