Репликация числа другим столбцом в r
Как я могу использовать функцию репликации в следующей ситуации:
mydata <- data.frame (var1 = 1:4, replication = c(3, 5, 3, 7))
mydata
var1 replication
1 1 3
2 2 5
3 3 3
4 4 7
Я хочу такой результат:
1,1,1, 2,2,2,2,2, 3,3,3, 4,4,4,4,4,4,4
1 повторяется 3 раза, 2 - 5 раз и т. Д.
Я пытался применить функцию, не делай ничего хорошего.
apply (mydata,2,rep )
1 ответ
Решение
Вы были на правильном пути: rep
это функция для работы. Но попробуйте это вместо:
with(mydata, rep(var1, replication))
То, как вы используете apply
Вот, rep
вызывается по каждому из столбцов в отдельности. Это было бы как звонить rep(1:4)
, затем rep(c(3,5,3,7))
и объединение результатов в matrix
,
apply
это отличная функция для знакомства, но это не инструмент для этой работы. На самом деле, решение этой проблемы с помощью apply
было бы довольно некрасиво
unlist(apply(mydata, 1, function(var1.rep) do.call(rep, unname(as.list(var1.rep)))))
@MatthewLundberg демонстрирует подходящий способ сделать это с apply
в комментариях.