【发布时间】:2018-02-28 07:56:26
【问题描述】:
如何计算字符串向量中的尾随零。例如,如果我的字符串向量是:
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 回答此问题,请提供链接。
【问题讨论】: