Ste*_*ano 3 arrays string r concatenation
我有一个简单的问题,我发现了一个非常复杂(C 风格)的解决方案,我想知道是否有比这更简单的东西。我有两个数组:
y <- c("A","B","C","D","E")
d <- c(1,3,1)
Run Code Online (Sandbox Code Playgroud)
我需要得到一个数组
"A","B-C-D","E"
Run Code Online (Sandbox Code Playgroud)
因此,根据分布,聚合由 a (或任何其他分隔符)分隔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]
}
Run Code Online (Sandbox Code Playgroud)
我们可以使用tapply按 'd' 复制的 'd' 序列分组的 'y' 以及paste'y' 的元素。
unname(tapply(y, rep(seq_along(d), d), FUN = paste, collapse="-"))
#[1] "A" "B-C-D" "E"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
136 次 |
| 最近记录: |