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])
答案 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链接中提供的任何方法。