如何在txt文件的r中拆分包含大量字母且没有空格的字符串?

Dun*_*ang 3 r stringr

假设我有一个如下所示的 txt 文件

aaaaaaaaaaaaaaaadddddddddddddssssssssssbbbbbbbbbbbbbccccccccccxxxxxxxxxxsddddddaaasdadvvvvvvvvbbbbbbbaxxxxnnnnnnnnnwwwwwwwwwwwwww
Run Code Online (Sandbox Code Playgroud)

str_split()这种情况我该如何申请?

我正在尝试计算这个txt文件中出现了多少个字母“a”

这是我到目前为止所拥有的,

aaaaaaaaaaaaaaaadddddddddddddssssssssssbbbbbbbbbbbbbccccccccccxxxxxxxxxxsddddddaaasdadvvvvvvvvbbbbbbbaxxxxnnnnnnnnnwwwwwwwwwwwwww
Run Code Online (Sandbox Code Playgroud)

然后我跑了str_length(str_detect(mytxtfile, "a"))

该函数的结果少于 9,我相信我在使用时做错了什么str_split()

请帮忙!

Qui*_*ten 6

基本 R 选项使用lengthsregmatchesgregexpr计算字符串中的字符,如下所示:

input = 'aaaaaaaaaaaaaaaadddddddddddddssssssssssbbbbbbbbbbbbbccccccccccxxxxxxxxxxsddddddaaasdadvvvvvvvvbbbbbbbaxxxxnnnnnnnnnwwwwwwwwwwwwww'
lengths(regmatches(input, gregexpr("a", input)))
#> [1] 21
Run Code Online (Sandbox Code Playgroud)

创建于 2022-12-09,使用reprex v2.0.2


@jay.sf 是对的!regmatches没有必要:

input = 'aaaaaaaaaaaaaaaadddddddddddddssssssssssbbbbbbbbbbbbbccccccccccxxxxxxxxxxsddddddaaasdadvvvvvvvvbbbbbbbaxxxxnnnnnnnnnwwwwwwwwwwwwww'
lengths(gregexpr("a", input))
#> [1] 21
Run Code Online (Sandbox Code Playgroud)

创建于 2022-12-09,使用reprex v2.0.2

  • 为什么 `regmatches`、`lengths(gregexpr('a', x))` 应该足够了。 (5认同)

Maë*_*aël 5

您可以使用str_count对字符串内部进行计数:

library(stringr)
mytxtfile = "aaaaaaaaaaaaaaaadddddddddddddssssssssssbbbbbbbbbbbbbccccccccccxxxxxxxxxxsddddddaaasdadvvvvvvvvbbbbbbbaxxxxnnnnnnnnnwwwwwwwwwwwwww"
str_count(mytxtfile, "a")
#[1] 21
Run Code Online (Sandbox Code Playgroud)

使用str_split_*函数,您可以使用str_split_1stringr 1.5.0必需)++ str_detectsum尽管如您所见,它str_count要好得多):

str_split_1(mytxtfile, "") |>
  str_detect("a") |>
  sum()
#[1] 21
Run Code Online (Sandbox Code Playgroud)