在R中重复矢量元素

时间:2010-05-12 19:07:01

标签: r plyr

我试图重复矢量a,b的元素次数。也就是说,如果y = 2,则a =“abc”应为“aabbcc”。

为什么以下任何一个代码示例都不起作用?

sapply(a, function (x) rep(x,b))

来自plyr包,

aaply(a, function (x) rep(x,b))

我知道我错过了一些非常明显的东西......

3 个答案:

答案 0 :(得分:16)

a不是矢量,您必须将字符串拆分为单个字符,例如

R> paste(rep(strsplit("abc","")[[1]], each=2), collapse="")
[1] "aabbcc"

答案 1 :(得分:10)

假设你a是一个向量,sapply会创建一个只需要折叠回向量的矩阵:

a<-c("a","b","c")
b<-3 # Or some other number
a<-sapply(a, function (x) rep(x,b))
a<-as.vector(a)

应创建以下输出:

"a" "a" "a" "b" "b" "b" "c" "c" "c"

答案 2 :(得分:0)

这是gsub/strrepbase R的另一个选项

gsub("(.)", strrep("\\1", 2), a)
#[1] "aabbcc"

数据

a <- 'abc'