微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用grepl查找单元格

如何解决用grepl查找单元格

我试图在以给定模式开头的data.frame中找到一个单元格(我需要搜索行和列)。 data.frames来自readxl包读取的excel工作簿。模式的位置因工作簿而异。因此,在工作簿1中,它可能在单元格B12中,但在工作簿2中,它将在单元格C12中。但是,一旦找到“锚定”单元格,我就可以在右侧查找1个单元格并找到我关心的数值。

当前我正在使用此

my_data <- iris
my_data$Species <- as.character(my_data$Species)
my_data[99,5] <- 'my_string'
my_data[109,5] <- 'my_string_too'

target_val <- 'my_string'
which(my_data == target_val,arr.ind = T)

这对于精确匹配很有用,但是我想获得grepl功能以使用诸如“以...开头”或“或”之类的东西,但无法弄清楚如何将两者结合起来。有没有办法做这样的事情:

which(my_data[grepl('my_string|my_string_too',my_data,ignore.case = T)],arr.ind = T)

解决方法

您可以使用sapply()来输出矩阵(在这种情况下),然后像以前一样使用which()。当然,此方法可以扩展到与%in%startsWith()endsWith()一起使用,或者如果要进行文字字符串匹配,则将grepl()fixed = TRUE一起使用。>

which(sapply(my_data,function(x) grepl("^my_string",x)),arr.ind = TRUE)

     row col
[1,]  99   5
[2,] 109   5

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。