Arrays R-基于另一个数组连接字符串元素

Arrays R-基于另一个数组连接字符串元素,arrays,r,string,concatenation,Arrays,R,String,Concatenation,我有一个简单的问题,我发现了一个非常复杂(C风格)的解决方案,我想知道是否有比这更简单的方法。 我有两个阵列: y <- c("A","B","C","D","E") d <- c(1,3,1) 因此,基于分布d,聚合由-分隔符(或任何其他分隔符)分隔的y元素 是我干的 old_y <- y y <- NULL k <- 1 for (i in 1:length(d)) { y[i] <- as.character(old_y[k]) j

我有一个简单的问题,我发现了一个非常复杂(C风格)的解决方案,我想知道是否有比这更简单的方法。 我有两个阵列:

  y <- c("A","B","C","D","E")
  d <- c(1,3,1)
因此,基于分布
d
,聚合由
-
分隔符(或任何其他分隔符)分隔的
y
元素

是我干的

old_y <- y
y <- NULL

k <- 1
for (i in 1:length(d)) {
  y[i] <- as.character(old_y[k])
  j <- 1
  while(d[i]>j) {
    y[i] <- paste0(y[i], "-", as.character(old_y[k+j]))
    j <- j + 1
  }
  k <- k + d[i]
}

old_y我们可以对“y”使用
tapply
按“d”复制的“d”序列分组,并将“y”的元素粘贴在一起

unname(tapply(y, rep(seq_along(d), d), FUN = paste, collapse="-"))
#[1] "A"     "B-C-D" "E" 
unname(tapply(y, rep(seq_along(d), d), FUN = paste, collapse="-"))
#[1] "A"     "B-C-D" "E"