- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以将值传递到 dbGetQuery
中的查询中来自 RMySQL 包。
例如,如果我在字符向量中有一组值:
df <- c('a','b','c')
我想循环遍历这些值,从数据库中为每个值提取特定值。
library(RMySQL)
res <- dbGetQuery(con, "SELECT max(ID) FROM table WHERE columna='df[2]'")
当我尝试添加对值的引用时,出现错误。想知道是否可以在查询中添加 R 对象的值。
最佳答案
一种选择是在循环内操作 SQL 字符串。目前您有一个字符串文字,'df[2]'
不会被 R 解释为字符以外的任何内容。我的答案中会有一些含糊之处,因为 Q 中的 df 显然不是数据框(它是字符向量!)。像这样的事情会做你想要的。
将输出存储在数值向量中:
require(RMySQL)
df <- c('a','b','c')
out <- numeric(length(df))
names(out) <- df
现在我们可以循环 df
的元素来执行查询三次。我们可以通过两种方式设置循环:i) 将 i
作为数字,用于引用 df
和 out
的元素,或者ii) 将i
依次作为df
的每个元素(即a
,然后b
,...) 。我将在下面展示这两个版本。
## Version i
for(i in seq_along(df)) {
SQL <- paste("SELECT max(ID) FROM table WHERE columna='", df[i], "';", sep = "")
out[i] <- dbGetQuery(con, SQL)
dbDisconnect(con)
}
或者:
## Version ii
for(i in df) {
SQL <- paste("SELECT max(ID) FROM table WHERE columna='", i, "';", sep = "")
out[i] <- dbGetQuery(con, SQL)
dbDisconnect(con)
}
您使用哪种取决于个人品味。第二 (ii) 版本要求您在输出向量 out
上设置与 out
内的数据相同的名称。
话虽如此,假设您的实际 SQL 查询与您发布的查询类似,您是否不能在单个 SQL 语句中使用 GROUP BY
子句来对数据进行分组在计算max(ID)
之前?像这样在数据库中做简单的事情可能会快得多。不幸的是,我没有可用的 MySQL 实例,而且我的 SQL-fu 目前很弱,所以我无法给出这样的示例。
关于r - 将动态值添加到 RMySQL getQuery 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17294136/
我正尝试按照 http://biostat.mc.vanderbilt.edu/wiki/Main/RMySQL 中的说明在 Windows 7(64 位)上安装 RMySQL。 .我正在使用 R 2
我在安装 RMySQL 时遇到问题。我正在尝试通过以下方式从其源代码安装它: install.packages("/path/to/package/RMySQL_0.9-3.tar.gz",repos
我的函数包含在一个更大的函数中,使用 dbConnect() , dbGetQuery() , 和 dbDisconnect() . 当函数出错时,我修复它并尝试重新运行它。但我无法重新运行它,因为我
我在多个内核上运行一个 R 脚本,它将数据插入到一个已经包含超过 7 亿行的表中。因为表变得太大,死锁变得很常见,因为我在多个内核上运行相同的脚本更是如此。我一直在尝试使用 TryCatch 解决这些
我试图仅在名称存在于已存在的数据框中的数据库中提取数据。我不确定如何将该列表包含到我的选择语句中。 奖励:我需要将所有数据重新格式化为更友好的格式。 library(RMySQL) library(D
我正在使用 RMySQL 包在当前表中写入(追加)数据。我使用的是 R,版本 3.3.2。 我的代码如下所示: library(RMySQL) df_final <- some_data m<-dbD
我一直在尝试使用 R(使用 Ubuntu 12.04)访问 MySQL 数据库,我觉得这应该是一件相当自然的事情,因为 R 是一种统计语言。然而,这看起来像是拔牙。似乎唯一不会遇到依赖错误的库是 RM
当我运行时 library(RMySQL) mydb = dbConnect(MySQL(), user = "XX", password = "XX", dbname = "XX", host =
我试过这个脚本来使用 RMySQL 在表中选择一个字段: mydb <- dbConnect(MySQL(), dbname="***", user='***',host='***') a<-2955
我有一段代码: mydb <- dbConnect(MySQL(), user = "****", password = "****", dbname = "c_global", host = "")
我正在试验 RMySQL ,并且不小心创建了一个没有句柄的连接。 dbConnect(MySQL(), user = "foo", password = "bar") connLocalDB = db
我在 R 中使用 RMySQL 包和 DBI 包。当我运行代码时, dbReadTable(con, "data") 这需要很长时间。 我认为表格是非常大的数据。关于如何加快此过程的任何想法? 谢谢,
我正在使用 RMySQL 包将数据从 R 导出到 MySQL 数据库。我面临的一个大问题是重复项:我有太多具有相同值的条目。系统自动生成结果并将dataframe插入数据库。 数据库中的当前表: Na
在我的 Linux 机器上安装 RMySQL 花费了大量时间,但我能够在更改环境变量并复制和粘贴 lib.dll 文件后安装它。 但是,我现在正在尝试在我的 64 位窗口机器上安装 RMySQL,但到
我正在尝试连接到远程可公开访问的 MySQL 服务器 EnsEMBL公共(public)服务器使用 RMySQL ,但是当我尝试列出表时,会发生错误: library(RMySQL) mydb = d
所以我一开始就很好地连接到我的数据库: con ", port = 3306 ) 所以一切正常,但在我的 Shiny 应用程序上运行/刷新几次后,它说我打开了 16 个连接,我无法再打开任何连接。 所
有没有办法使用 RMySQL 创建临时表?包?如果是这样,正确的方法是什么?特别是我试图从我的 写一个数据帧R session 到临时表。我有几个并行运行的进程,我不想担心名称冲突,这就是为什么我想让
背景: 我正在开发一个 rscript,它从 mysql 数据库中提取数据,执行逻辑回归,然后将预测插入回数据库中。我希望整个系统都包含在脚本中,以防数据库出现故障。这包括脚本依赖于在后端聚合数据的所
我在将值传递到 dbSendQuery 时遇到困难。下面是我的代码: 参数: date_param [1] "select distinct product_id, group from test_
我有一个 80 * 5 data.frame df 使用 dbWriteTable(mydb, name = "fooDB", df, field.types = dbtypes, row.names
我是一名优秀的程序员,十分优秀!