我试图在数据框中找到包含某个字符串的索引。但我希望我的字符串不区分大小写。 说,我想在名为COLUMN73的数据框中搜索列号,我希望它返回73,因为它是第七十三列。我有,
which(names(mydata) == "COLUMN73")
是否可以使我的搜索字符串不区分大小写,以便即使我搜索说CoLumN73也能得到73?
感谢。
答案 0 :(得分:7)
您可以使用grepl
参数
ignore.case
对其进行索引
x <- c("col7", "COL73", "Col17", "CoL73", "cOl73")
grepl("col73", x, ignore.case=TRUE)
# [1] FALSE TRUE FALSE TRUE TRUE
同样,grep
返回数字索引
grep("col73", x, ignore.case=TRUE)
# [1] 2 4 5
对于数据框列子集
df[grepl("col73", names(df), ignore.case=TRUE)]
答案 1 :(得分:6)
您可以将您的名字转换为大写
which(toupper(names(mydata)) == "COLUMN73")
答案 2 :(得分:0)
完整编辑,修正了Will的代码。感谢David Arenburg指出这一点。
x <- rep(c("col7", "COL73", "Col17","COLUMN73", "CoL73", "cOl73"),1e4)
scriven<- function(x) grepl("COLUMN73", x, ignore.case=TRUE)
will<-function(x) which(toupper((x)) == "COLUMN73")
microbenchmark(scriven(x),will(x))
Unit: milliseconds
expr min lq median uq max neval
scriven(x) 30.55911 33.04852 34.91243 37.01039 39.59833 100
will(x) 26.10728 26.47967 27.21592 28.76291 30.46163 100