【问题标题】:How to find the exact number of a single letter in a string of characters in R?如何在R中的字符串中找到单个字母的确切数量?
【发布时间】:2014-04-17 18:54:35
【问题描述】:

我有一串字符。

c = c("a", "about", "base", "base", "h2o", "h", "yes", "a", "c", "h", "d")

我需要找出特定单个字母的次数,例如“a”、“c”、“h”、“d”在字符串中重复出现。我试过了

grep("a", c, fixed=TRUE, useBytes=TRUE)

但它会给出“a”出现的所有位置,包括“about”和“base”。我也试过了

match("a", c)

遗憾的是,它只给出了第一个匹配的位置,而忽略了后面的匹配。

如何获取“a”的所有位置,应该是1和8?

【问题讨论】:

  • which(x == "a") 能得到你想要的吗?

标签: string r search character


【解决方案1】:

听起来你只是在寻找tablewhich

String <- c("a", "about", "base", "base", "h2o", "h", "yes", "a", "c", "h", "d")
table(String)
# String
#     a about  base     c     d     h   h2o   yes 
#     2     1     2     1     1     2     1     1 

which(String == "a")
# [1] 1 8

nchar(String)
#  [1] 1 5 4 4 3 1 3 1 1 1 1

table(String[nchar(String) == 1])
# 
# a c d h 
# 2 1 1 2 

【讨论】:

  • @TylerRinker,我现在做任何读心术都太晚了:-)
  • 我为 sample(c(T, F), 1) 写了一个应用程序 :-)
【解决方案2】:

你可以在 grep 中改变你的正则表达式

v = c("a", "about", "base", "base", "h2o", "h", "yes", "a", "c", "h", "d")
grep("^a$", v)
#[1] 1 8
length(grep("^a$", v))
#[1] 2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2022-06-12
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多