grep不会显示所有索引,仅显示[1] 1

时间:2019-05-08 03:32:17

标签: r

grep始终输出[1] 1,但不输出真实索引

a = "d123  d123 d123 asdf asd D123"
grep("d", a)
[1] 1

变量a中有多个“ d”,但不会显示所有索引。我尝试了http://rfunction.com/archives/1481,它可以正常工作。

为什么简单的人不这样做?

应该等同于

unlist(gregexpr("d",a)[1])

2 个答案:

答案 0 :(得分:3)

编辑我从您的链接示例中假设索引引用了一个向量。但是,既然我运行了您的问题中的第二个代码示例,我看到您想要index =在字符串中的位置。所以@ ronak-shah是正确的,不是我。

我想你想要

a = c("d123",  "d123", "d123", "asdf", "asd", "D123")

因为您当前的变量a是一个长度为1的字符串。

答案 1 :(得分:2)

来自?grep

  

grep(value = FALSE)返回产生匹配的x元素索引的向量

例如,参见

x <- c("abc", "ddddd", "ads", "ccc")

grep("d", x)
#[1] 2 3

这意味着x[2]x[3]中包含d,而与其中d的数量无关。

由于您希望d在字符串 grep中的位置不是正确的选择。你可以做

which(strsplit(a, "")[[1]]=="d")
#[1]  1  7 12 19 24

使用grep将会是

grep("d", strsplit(a, "")[[1]])
#[1]  1  7 12 19 24

等于unlist(gregexpr("d",a)[1])

或使用this链接中提供的任何方法。