R按列和行号访问数据库查询结果

时间:2009-12-29 07:21:28

标签: r syntax comparison

我是R语言的新手。我已成功将查询的结果集加载到变量中。现在我想按列名和行号访问结果集数据。我需要验证它是否为Null(在结果中显示为< NA>)然后通过bat文件用PHP发送邮件。我的示例代码如下。

library(RODBC)
newconn = odbcConnect("db", uid="uid", pwd="pwd") 
new <- sqlQuery(newconn,"SELECT COL1, COL2 FROM TABLE1;", errors = TRUE, 1)
if(new$COL1[3] == "<NA>"){
system("sendmail.bat")
}else{
print ("failed")
}

另外,我想比较下面的字符串结果。

if(new$COL2[10] == 'MYSTRING'){
print("success")
}

但我认为我使用了错误的语法。请帮忙,因为我无法获得进行这些比较的正确语法。

1 个答案:

答案 0 :(得分:1)

试试这个:

# I'd avoid new as a variable name
newdata <- sqlQuery(newconn,"SELECT COL1, COL2 FROM TABLE1;", errors = TRUE, 1)

# index data frame by row number and column name

if (newdata[3, "COL1"] == "someValue") {
     print("found someValue")
} else {
     print ("failed")
}

您也可以

if (newdata[3, 2] == "MYSTRING")

按行和列索引编制索引。

最后,测试NA与字符串比较不同 - 您需要is.null()is.na(),因为这可能会被ODBC访问转换。