Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-字符串中字符的最大位置_R - Fatal编程技术网

R-字符串中字符的最大位置

R-字符串中字符的最大位置,r,R,我有一个字符串列表,如下所示: This - is - a test 我想从中获取字符串a test。 我的想法是获得“-”的最大位置,然后从该位置开始一个子字符串。然而,我无法做到这一点。有什么帮助吗?一种快速而肮脏的方法是使用strsplit和tail: lapply(strsplit(x, "-"), tail, 1) # [[1]] # [1] " a test" 一种快速而肮脏的方法是使用strsplit和tail: lapply(strsplit(x, "-"), tail, 1

我有一个字符串列表,如下所示:

This - is - a test
我想从中获取字符串
a test

我的想法是获得“-”的最大位置,然后从该位置开始一个子字符串。然而,我无法做到这一点。有什么帮助吗?

一种快速而肮脏的方法是使用
strsplit
tail

lapply(strsplit(x, "-"), tail, 1)
# [[1]]
# [1] " a test"

一种快速而肮脏的方法是使用strsplit和tail:

lapply(strsplit(x, "-"), tail, 1)
# [[1]]
# [1] " a test"
你可以用潜艇

sub(".*-", "", x)

  • *-
    将所有字符贪婪地匹配到最后一个连字符
  • \\s*
    匹配零个或多个空格字符
  • 因此,用空字符串替换所有匹配的字符将获得所需的输出
您可以使用sub

sub(".*-", "", x)

  • *-
    将所有字符贪婪地匹配到最后一个连字符
  • \\s*
    匹配零个或多个空格字符
  • 因此,用空字符串替换所有匹配的字符将获得所需的输出

因为它是一个字符串,并且您需要特定子字符串的所有匹配位置,所以需要使用
gregexpr
。在这种情况下

tail(gregexpr("-",x,fixed = T)[[1]],1) 
将给出最后一个匹配索引,之后您可以使用
substr
获取所需的子字符串

如果需要所有匹配项,请删除
tail
调用


HTH

因为它是一个字符串,并且您需要特定子字符串的所有匹配位置,所以需要使用
gregexpr
。在这种情况下

tail(gregexpr("-",x,fixed = T)[[1]],1) 
将给出最后一个匹配索引,之后您可以使用
substr
获取所需的子字符串

如果需要所有匹配项,请删除
tail
调用


HTH

你需要得到这个职位吗?或者只是最后一个“-”后面的文本?你需要得到这个位置吗?还是最后一个“-”后面的文本?