R中的'which'命令,不区分大小写

IAM*_*bby 1 r which

我试图在数据框中找到包含某个字符串的索引.但我希望我的字符串不区分大小写.说,我想在名为COLUMN73的数据框中搜索列号,我希望它返回73,因为它是第七十三列.我有,

which(names(mydata) == "COLUMN73")
Run Code Online (Sandbox Code Playgroud)

是否有可能使我的搜索字符串不敏感,以便即使我搜索说CoLumN73也能得到73?

谢谢.

Ric*_*ven 7

您可以grepl使用ignore.case参数对其进行索引

x <- c("col7", "COL73", "Col17", "CoL73", "cOl73")
grepl("col73", x, ignore.case=TRUE)
# [1] FALSE  TRUE FALSE  TRUE  TRUE
Run Code Online (Sandbox Code Playgroud)

同样,grep返回数字索引

grep("col73", x, ignore.case=TRUE)
# [1] 2 4 5
Run Code Online (Sandbox Code Playgroud)

对于数据框列子集

df[grepl("col73", names(df), ignore.case=TRUE)]
Run Code Online (Sandbox Code Playgroud)

  • 或者`grepl("(?i)col73",x)` (2认同)

Wil*_*ill 6

您可以将您的名字转换为大写字母

which(toupper(names(mydata)) == "COLUMN73")
Run Code Online (Sandbox Code Playgroud)