9

我正在尝试重复向量 a、b 的元素次数。也就是说,如果 y = 2,a="abc" 应该是 "aabbcc"。

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

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

从 plyr 包中,

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

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

4

3 回答 3

17

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

R> paste(rep(strsplit("abc","")[[1]], each=2), collapse="")
[1] "aabbcc"
于 2010-05-12T19:17:05.093 回答
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"
于 2010-05-12T22:19:50.647 回答
0

这是另一个选项gsub/strrepinbase R

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

数据

a <- 'abc'
于 2020-06-09T04:38:07.047 回答