r - 计算 R 中的尾随零

标签 r regex string stringr

如何计算字符串向量中的尾随零。例如,如果我的字符串向量是:

x = c('0000','1200','1301','X230','9900')

答案应该是

> numZeros
[1] 4 2 0 1 2

我不想使用多个ifelse,因为我认为应该存在更优雅、更快的解决方案。我尝试使用模数,像这样

y = as.integer(x)
numZeros = (!(y%%10000))+(!(y%%1000))+(!(y%%100))+(!(y%%10))

但这需要两个条件成立。

  • 字符串的最大长度是固定的(在我的例子中是这样)并且
  • 向量中的所有字符串都可以转换为整数,但在我的情况下并非如此。

然后使用stringr包并创建了一个解决方案,但它非常冗长。

library(stringr)
numZeros = 
4*str_detect(x,"0000") + 
3*str_detect(x,"[1-9 A-Z]000") + 
2*str_detect(x,"[1-9 A-Z]{2}00") + 
str_detect(x,"[1-9 A-Z]{3}0")

另外,通过查看 str_detect 的定义,我无法判断 str_detect 是否使用了 ifelse

我发现了同样的问题here但对于 python 。如果 R 已回答此问题,请提供链接。

最佳答案

我找到了一个使用基本R的简单解决方案:

x <- c('0000','1200','1301','X230','9900')
nchar(x) - nchar(sub("0*$", "", x))
# > nchar(x) - nchar(sub("0*$", "", x))
# [1] 4 2 0 1 2

关于r - 计算 R 中的尾随零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49024537/

相关文章:

java - 计算器的字符串解析错误 - NumberFormatException

r - 使用 tidyverse 计算平均值

r - 在 R 中使用 RCurl 下载 NASA 卫星数据

javascript - 用于在 PHP 上剥离 javascript 的正则表达式

python 使用 re.sub 捕获组

ios - 如何在 NSString 中捕获特殊指示的**字符**并加粗中间的内容?

string - 有没有关于如何实现二维 KMP 的论文或解释?

java - 将字符串更改为用户设置的值

r - dplyr 中的过滤功能错误 : object 'name' not found

r - 文本替换——模式是一组字符串[r]