Репликация числа другим столбцом в 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 в комментариях.

Другие вопросы по тегам