2009-12-29 26 views
0

我是R語言的新手。我已成功將查詢的結果集加載到變量中。現在我想按列名和行號訪問結果集數據。我需要驗證它是否爲空(它在結果中顯示爲< NA>),然後通過使用PHP的bat文件發送郵件。我的示例代碼如下。R按列和行號訪問數據庫查詢結果

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

試試這個:

# 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訪問進行轉換。

+0

非常感謝。 is.na()是我正在尋找的人。 – 2009-12-29 11:54:59