R - 基于另一个阵列的连接字符串元素
问题描述:
我有一个简单的问题,我发现一个非常复杂(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]
}
答
我们可以在“Y”使用tapply
由“D”由“d”和paste
在一起“Y”的元素复制的顺序分组。
unname(tapply(y, rep(seq_along(d), d), FUN = paste, collapse="-"))
#[1] "A" "B-C-D" "E"
哇!只是哇! :) – Stefano