gpt4 book ai didi

r - 如何确定字符串 "ends with"是否是 R 中的另一个字符串?

转载 作者:行者123 更新时间:2023-12-04 02:55:35 26 4
gpt4 key购买 nike

我想过滤掉列的字符串值中包含 '*' 的表的行。只检查那一列。

 string_name = c("aaaaa", "bbbbb", "ccccc", "dddd*", "eee*eee")

zz <- sapply(tx$variant_full_name, function(x) {substrRight(x, -1) =="*"})
Error in FUN(c("Agno I30N", "VP2 E17Q", "VP2 I204*", "VP3 I85F", "VP1 K73R", :
could not find function "substrRight"

zz 的第 4 个值应该是 TRUE。

在python中有字符串的endswith函数[ string_s.endswith('*') ]
在 R 中有类似的东西吗?

另外,是否因为 '*' 作为字符而出现问题,因为它意味着任何字符? grepl 也不起作用。
> grepl("*^",'dddd*')
[1] TRUE
> grepl("*^",'dddd')
[1] TRUE

最佳答案

*quantifier在正则表达式中。它告诉正则表达式引擎尝试“零次或多次”匹配前面的标记。要匹配文字,您需要在它前面加上两个反斜杠或放在字符类中 [*] .要检查字符串是否以特定模式结尾,请使用 end of string $ anchor .

> grepl('\\*$', c('aaaaa', 'bbbbb', 'ccccc', 'dddd*', 'eee*eee'))
# [1] FALSE FALSE FALSE TRUE FALSE

您可以简单地执行此操作,而无需在基础 R 中实现正则表达式:
> x <- c('aaaaa', 'bbbbb', 'ccccc', 'dddd*', 'eee*eee')
> substr(x, nchar(x)-1+1, nchar(x)) == '*'
# [1] FALSE FALSE FALSE TRUE FALSE

关于r - 如何确定字符串 "ends with"是否是 R 中的另一个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26188663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com