【问题标题】:R - Concatenate string elements based on another arrayR - 基于另一个数组连接字符串元素
【发布时间】:2016-12-25 15:13:11
【问题描述】:

我有一个简单的问题,我找到了一个非常复杂(C 风格)的解决方案,我想知道是否有比这更简单的东西。 我有两个数组:

  y <- c("A","B","C","D","E")
  d <- c(1,3,1)

我需要得到一个数组

"A","B-C-D","E"

因此,根据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]
}

【问题讨论】:

    标签: arrays r string concatenation


    【解决方案1】:

    我们可以在 'y' 上使用 tapply 按 'd' 复制的 'd' 序列和 paste 'y' 的元素一起分组。

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

    【讨论】:

      猜你喜欢
      • 2019-03-09
      • 1970-01-01
      • 2018-09-30
      • 1970-01-01
      • 2018-05-10
      • 2011-09-07
      • 2020-05-18
      • 2019-08-07
      • 2022-01-03
      相关资源
      最近更新 更多