странная ошибка функции rep

Когда я выступаю:

a <- seq(1,1.5,0.1)
b <- c(1,1.1,1.4,1.5)

x <- rep(c(a,b),times=c(2,1))

Ошибка в rep(c(a, b), c(2, 1)) : неверный аргумент "times"

Почему?


r rep
person Alexander    schedule 02.11.2015    source источник
comment
Когда вы объединяете, это один вектор.   -  person akrun    schedule 02.11.2015


Ответы (2)


Когда мы объединяем (c) два вектора, он становится одним вектором. Если идея состоит в том, чтобы воспроизвести «a» на 2 и «b» на 1, мы помещаем их в list и используем rep. На выходе будет list, который можно unlist обработать, чтобы получить vector.

 unlist(rep(list(a,b), c(2,1)))
person akrun    schedule 02.11.2015
comment
но когда я делаю rep(c(0,7),times=c(4,2)), он работает. Так что я запутался. - person Alexander; 02.11.2015
comment
@Alexander Длина 0,7 равна двум, что соответствует длине времени. - person akrun; 02.11.2015

Отмеченный ответ уже идеален: здесь альтернатива с использованием mapply

unlist(mapply(function(x,n)rep(x,n),list(a,b),c(2,1)))
person Andre Elrico    schedule 10.10.2017