如何在R中使用正则表达式编辑名称?

use*_*363 2 r

我的名字如下.我只是想保留这部分..怎么样

>name
    uc001aaa.3
    uc001aac.4
    uc001aae.4
    uc001aah.4
    uc001aai.1
    uc001aak.3
    uc001aal.1
    uc001aam.4
    uc001aaq.2
    uc001aar.2
Run Code Online (Sandbox Code Playgroud)

如何使用regexsub在R中实现此功能?

Ben*_*ker 5

我认为这肯定是重复的,但尽管有一些gsub问题我不能轻易找到一个(例如/sf/ask/1669113141/ in-r). 更新:具有讽刺意味的是,最近的一个问题是OP几天前提出的问题,如何修剪矩阵的列名?...

无论如何,

gsub("\\.[0-9]$","",name)
Run Code Online (Sandbox Code Playgroud)

做你想要的;

  • \\.指定一个文字.字符(需要一个反斜杠来指定它.是文字而不是"任何字符";第二个是保护第一个字符所必需的!).正如@MatthewLundberg所指出的那样你也可以[.]在这里使用(.在字母范围内解释,而不是作为"任何字符",在范围括号内[]).
  • [0-9] 表示"0-9范围内的单个字符"(不像您认为的那样,字符串的前9个字符)
  • $ 意思是"字符串的结尾"

因此,这将从每个字符串的末尾删除一个点加一个数字.在点之前有多少个字符并不重要.另一方面,如果您可能有多个数值,例如foo.123,您将需要"\\.[0-9]+$(+手段"前面的一个或多个模式")