我試圖使用grep函數來搜索R中的一行數據幀,但它一直返回「字符(0)」,是否有我不知道的東西知道使用grep沿行搜索?使用grep來搜索R中的行
我可以看到,我正在搜索的是在行中,但grep沒有找到它。
試過提供固定= FALSE和ignore.case = TRUE
命令:
grep("string",df[1,])
我可以輕鬆地使用
which(df[1,]=="string")
但爲什麼grep的找不到字符串?
我試圖使用grep函數來搜索R中的一行數據幀,但它一直返回「字符(0)」,是否有我不知道的東西知道使用grep沿行搜索?使用grep來搜索R中的行
我可以看到,我正在搜索的是在行中,但grep沒有找到它。
試過提供固定= FALSE和ignore.case = TRUE
命令:
grep("string",df[1,])
我可以輕鬆地使用
which(df[1,]=="string")
但爲什麼grep的找不到字符串?
因爲grep
適用於矢量不是data.frame
:
數據
#> df=data.frame(col1=c("cat123","doggy"),col2=c("mydog","cat"),col3=1:2)
#> df
# col1 col2 col3
#1 cat123 mydog 1
#2 doggy cat 2
> is.data.frame(df[1,])
[1] TRUE
如果您遍歷與apply
,你循環的載體的data.frame
行和以下工作:
> t(apply(df,1,function(u) grepl("dog",u)))
[,1] [,2] [,3]
[1,] FALSE TRUE FALSE
[2,] TRUE FALSE FALSE
如果你看的grep的代碼,你會看到在第一線的原因
if (!is.character(x))
x <- structure(as.character(x), names = names(x))
嘗試在數據幀,並看看會發生什麼
你也可以轉換成一個矩陣'「黯淡< - 」(grepl(「狗」,如。矩陣(df)),dim(df))' – akrun 2015-02-10 13:13:03
永遠是最好的解決方案:)但是,你可以參考一些鏈接清楚地解釋'昏暗< - '? – 2015-02-10 13:19:05
這是一種不同的分配方式,而不是分兩步書寫。即。 'm1 < - grepl('dog',as.matrix(df)); dim(m1)< - dim(df)'。我目前沒有鏈接。 – akrun 2015-02-10 13:24:17