【问题标题】:find first non zero value in string in R在R中的字符串中找到第一个非零值
【发布时间】:2018-05-30 15:26:07
【问题描述】:

我在 R 中有一个列,每个元素都像这样 '005443333332222222211023222101110009988877665 有没有办法从起始位置/非零数字的第一次出现找到连续零的数量?对于上述情况将是 2

【问题讨论】:

标签: r string


【解决方案1】:

一种方法是使用 RegEx 去掉前导零,然后计算字符数:

string <- "005443333332222222211023222101110009988877665"

# the regex pattern (0+) matches one or more zeros, but only if they
# are at the beginning of the string, and captures in group 1

strLength <- nchar(gsub("^(0+).*","\\1", string))


print(strLength)
[1] 2

编辑:要处理没有任何前导零的情况,您需要先检查字符串是否以零开头:

strLength <- ifelse(grepl("^0+.*", string) == TRUE,nchar(gsub("^(0+).*","\\1", string)),0)

因为如果你的字符串是“123456”,当没有前导零时,我的第一个答案将返回 6。

【讨论】:

  • 这是一个每个单元格中都有字符串的列,字符串的长度可以固定,这可能有效,但您每次都需要计算字符串的长度。谢谢!
  • @XinyuanZhang 不确定我是否理解您的评论。你是说你认为你不应该为每一行计算零字符串的长度?
  • 另外,我应该指出,我们从不计算整个字符串的长度,只计算 gsub 函数的输出长度,这只是前导零。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-03
  • 2013-09-25
  • 1970-01-01
  • 2015-09-17
  • 1970-01-01
相关资源
最近更新 更多