根据这里的建议:在字符串中查找字符的位置,我尝试了这个:
> 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
您如何在此字符串中找到
$
的位置?根据这里的建议:在字符串中查找字符的位置,我尝试了这个:
> 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
$
的位置?$
是正则表达式中的字符串结尾标记。请改用以下代码:> gregexpr(pattern ='\\$',"data.frame.name$variable.name")
[[1]]
[1] 16
attr(,"match.length")
[1] 1
attr(,"useBytes")
[1] TRUE
...它提供正确的答案,即16
。
strsplit
和which
函数。> which(strsplit("data.frame.name$variable.name", "")[[1]]=="$")
[1] 16
gregexpr
代码更易于理解,而且很可能更有效率。我认为gregexpr
只是遍历字符串,而strsplit
则将整个字符串分割成单个字符并存储结果。虽然性能在这里可能不是问题,但我仍然认为gregexpr
是更好的方法。 - cryo111