2016-08-18 74 views
2

我有一個簡單的問題,我發現一個非常複雜(C時尚)的解決方案,我想知道是否有比這更簡單的東西。 我有兩個陣列:R - 基於另一個陣列的連接字符串元素

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] 
} 

回答

4

我們可以在「Y」使用tapply由「D」由「d」和paste在一起「Y」的元素複製的順序分組。

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

哇!只是哇! :) – Stefano

相關問題