在字符串中查找 $ 的位置

3

根据这里的建议:在字符串中查找字符的位置,我尝试了这个:

> gregexpr(pattern ='$',"data.frame.name$variable.name")
[[1]]
[1] 30
attr(,"match.length")
[1] 0
attr(,"useBytes")
[1] TRUE

但是它没有起作用;注:
> nchar("data.frame.name$variable.name")
[1] 29

您如何在此字符串中找到$的位置?
2个回答

9
问题在于$是正则表达式中的字符串结尾标记。请改用以下代码:
> gregexpr(pattern ='\\$',"data.frame.name$variable.name")
[[1]]
[1] 16
attr(,"match.length")
[1] 1
attr(,"useBytes")
[1] TRUE

...它提供正确的答案,即16


3
这里有一个解决方案,使用strsplitwhich函数。
> which(strsplit("data.frame.name$variable.name", "")[[1]]=="$")
[1] 16

1
谢谢!那是一个非常简单、聪明的解决方案。 - gung - Reinstate Monica
1
顺便说一句,你应该将这个作为回答添加到其他线程中;这比现有的答案更直接。 - gung - Reinstate Monica
1
顺便说一句,我把支票给了西蒙,因为他也解释了为什么我的代码不起作用,但我会使用这个更简单的解决方案。 - gung - Reinstate Monica
2
尽管Jilber的解决方案是一个不错的选择,但我会选择Simon的方法。鉴于读者在R方面有一定的经验,使用gregexpr代码更易于理解,而且很可能更有效率。我认为gregexpr只是遍历字符串,而strsplit则将整个字符串分割成单个字符并存储结果。虽然性能在这里可能不是问题,但我仍然认为gregexpr是更好的方法。 - cryo111

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接