r - 在 R 中用 n 个单词拆分字符串

标签 r regex string

我需要在 R 中每五个单词(或左右)拆分一个字符串。给定输入:

x <- c("one, two, three, four, five, six, seven, eight, nine, ten")

我想要输出:

[1] "one, two, three, four, five"
[2] "six, seven, eight, nine, ten"

是否有正则表达式或函数来完成此操作?

最佳答案

这是一个适用于单长度 x 的函数。

x <- c("one, two, three, four, five, six, seven, eight, nine, ten")

#' @param x Vector
#' @param n Number of elements in each vector
#' @param pattern Pattern to split on
#' @param ... Passed to strsplit
#' @param collapse String to collapse the result into
split_every <- function(x, n, pattern, collapse = pattern, ...) {
  x_split <- strsplit(x, pattern, perl = TRUE, ...)[[1]]
  out <- character(ceiling(length(x_split) / n))
  for (i in seq_along(out)) {
    entry <- x_split[seq((i - 1) * n + 1, i * n, by = 1)]
    out[i] <- paste0(entry[!is.na(entry)], collapse = collapse)
  }
  out
}

library(testthat)
expect_equal(split_every(x, 5, pattern = ", "),
             c("one, two, three, four, five",
               "six, seven, eight, nine, ten"))

关于r - 在 R 中用 n 个单词拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46260274/

相关文章:

r - 在R中将字符转换为数值

regex - 自定义获取URL目录函数

javascript - 仅查找以单引号或双引号开头的所有单词的正则表达式

Java 字符串正则表达式替换方法从替换中删除反斜杠

string - 正确获取中文字符串的宽度

r - 为什么 R 字符向量和数字向量在某些上下文中相等?

r - 基于R中给定条件的矢量填充真或假,无循环

R数据表的复制和修改更改了原始数据

需要 C# 正则表达式

sql-server - 获取sql server中重复多次的2个字符之间的字符串