每行的新列来自对 R 中 mysql 数据库的查询

new column each row results from a query to mysql database in R

我有一个包含三列的简单数据框。其中一列包含数据库名称。我首先需要检查数据是否存在,如果不存在,则插入它。否则什么也不做。

示例数据框:

clientid;region;database
135;Europe;europedb
2567;Asia;asiadb
23;America;americadb

所以我创建了一个函数以这种方式应用于数据框:

library(RMySQL)

    check_if_exist <- function(df){

    con <- dbConnect(MySQL(),
                       user="myuser", password="mypass",
                       dbname=df$database, host="myhost")

    query <- paste0("select count(*) from table where client_id='", df$clientid,"' and region='", df$region ,"'")

    rs <- dbSendQuery(con, query)

    rs

    }

函数调用:

df$new_column <- lapply(df, check_if_exist)

但这行不通。

如果我理解正确的话,这是你所问内容的一个工作示例。但是我没有你的数据库,所以我们只是打印查询进行验证,并获取一个随机数作为结果。

请注意,通过执行 lapply(df,...),您将遍历数据库的列,而不是您想要的行。

df = read.table(text="clientid;region;database
135;Europe;europedb
2567;Asia;asiadb
23;America;americadb",header=T,sep=";")


check_if_exist <- function(df){
  query = paste0("select count(*) from table where client_id='", df$clientid,"' and region='", df$region ,"'")
  print(query)
  rs <- runif(1,0,1)
  return(rs)
}

df$new_column <- sapply(split(df,seq(1,nrow(df))),check_if_exist)

希望对您有所帮助。