将项目粘贴到向量中并将它们分组为 x 的倍数,并用空格分隔

Joh*_*ohn 2 grouping r paste

如果我有以下包含一些数据的向量,例如

a <- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)
Run Code Online (Sandbox Code Playgroud)

假设我想将这 20 个值按照排列顺序分为 4 个,如下所示

[1] "1\n2\n3\n4" "5\n6\n7\n8" "9\n10\n11\n12" "13\n14\n15\n16" "17\n18\n19\n20"
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?我从这个函数开始paste,但我被困住了:(我假设它会涉及一个 for 循环。

paste(a)
Run Code Online (Sandbox Code Playgroud)

the*_*ail 6

拆分并应用一个函数,使用tapply一些整数除法 ( %/%) 进行分组:

tapply(a, (seq_along(a) - 1) %/% 4, FUN=paste, collapse="\n")
##               0                1                2                3                4 
##    "1\n2\n3\n4"     "5\n6\n7\n8"  "9\n10\n11\n12" "13\n14\n15\n16" "17\n18\n19\n20" 
Run Code Online (Sandbox Code Playgroud)

这适用于任何大小的分割,并且还可以在组大小没有整齐划分的情况下处理最后的溢出:

a <- 1:10
tapply(a, (seq_along(a) - 1) %/% 4, FUN=paste, collapse="\n")
##           0            1            2 
##"1\n2\n3\n4" "5\n6\n7\n8"      "9\n10" 
Run Code Online (Sandbox Code Playgroud)