Повторите элементы вектора в R - PullRequest
9 голосов
/ 12 мая 2010

Я пытаюсь повторить элементы вектора a, b несколько раз. То есть a = "abc" должно быть "aabbcc", если y = 2.

Почему не работает ни один из следующих примеров кода?

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

и из пакета plyr,

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

Я знаю, что упускаю что-то очень очевидное ...

Ответы [ 2 ]

16 голосов
/ 12 мая 2010

a не является вектором, вы должны разбить строку на отдельные символы, например,

R> paste(rep(strsplit("abc","")[[1]], each=2), collapse="")
[1] "aabbcc"
10 голосов
/ 13 мая 2010

Предполагая, что вы 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"
...