Arrays R-基于另一个数组连接字符串元素
我有一个简单的问题,我发现了一个非常复杂(C风格)的解决方案,我想知道是否有比这更简单的方法。 我有两个阵列: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
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"