R 连接向量的每隔几个元素

标签 r vector

我想知道 R 中是否有一种方法可以无循环地连接向量的元素。例如,像这样连接每 3 个元素:

之前:

"1 2 3 4 5 6 7 8 9"

之后:

"1 2 3" "4 5 6" "7 8 9"

谢谢!

最佳答案

我们可以使用环视正则表达式分割字符串

trimws(strsplit(str1, '(?<=([^ ]\\s){3})', perl=TRUE)[[1]])
#[1] "1 2 3" "4 5 6" "7 8 9"

如果我们有一个数值向量,请为每 3 个连续元素创建一个分组变量 gl并使用 group by 函数之一 ( tapply ) 到 paste元素组合在一起。

v1 <- 1:9
tapply(v1, as.numeric(gl(length(v1), 3, length(v1))), 
          FUN= paste, collapse=' ')

数据

str1 <- "1 2 3 4 5 6 7 8 9"

关于R 连接向量的每隔几个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33937890/

相关文章:

vector - "Right"在 clojure 中处理顺序很重要的多个返回值的方法

matlab - 如何在 Matlab 中向量化这个 for 循环?

c++ - 使用 vector C++ 的 vector 设置单位矩阵

r - Shiny - 将文本输入纳入辅助功能

r - aeqSurv(Y) : aeqSurv exception, 中的错误间隔的有效长度为 0

r - 不带coord_flip的水平ggplot2::geom_violin

c++ - 如何维护一组没有重复的 vector

C++ multimap<int, vector<string>> 内存分配问题

r - aws.s3 部署 Shinyapp 时的包问题

r - 为什么从函数内部调用cv.tree()找不到此对象?