我有一个包含三列的简单数据框。其中一列包含数据库名称。我首先需要检查数据是否存在,如果不存在,请插入它。否则什么都不做。
示例数据框:
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)
但这不起作用。
答案 0 :(得分:1)
如果我理解正确的话,这是你要问的一个有效例子。但是我没有你的数据库,所以我们只打印查询进行验证,然后取一个随机数作为结果。
请注意,通过执行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)
希望这有帮助。