一個簡單的「有更好的方法」的問題。我想找到,如果在data.frame任何單元格中包含的子字符串我在尋找:grep在data.frame中的任何單元格
d=data.frame(V1=c("xxx","yyy","zzz"), V2=c(NA,"ewruinwe",NA))
grepl("ruin",d[2,2]) #TRUE
grepl("ruin",d) #FALSE FALSE
any(grepl("ruin",as.character(as.matrix(d)))) #TRUE
最後一行我想要做什麼,但它看起來這麼難看,我想知道如果我我錯過了一些簡單的事情。
背景:d
是t=readHTMLTable(url)
(XML包)中的元素之一。我正在執行d [2,2]方法,檢查錯誤消息,並且剛發現網站有時會向HTML表格添加另一行,將我正在尋找的錯誤消息推送到另一個單元格。
更新:所以,似乎這兩個選擇(感謝mathematical.coffee和羅馬Luštrik)是:
any(grepl("ruin",as.matrix(d)))
any(apply(d, 2, function(x) grepl("ruin", x)))
對於什麼是值得的,你不必做'as.matrix'之後的'as.character',因爲R已經這樣做了。即'any(grepl('ruin',as.matrix(d),ignore.case = T))'。我認爲它就像你會得到的一樣光滑。你可以使用'apply'和朋友,但看起來更糟:'any(apply(d,1,function(x)grepl(「ruin」,x,ignore.case = T))' –