Вопрос
Этот вопрос содержит 2 части.Повторите определенное значение, разное количество раз в R
Во-первых, У меня есть кадр данных, который содержит некоторые цифры в столбце. Это выглядит примерно так.
> df <- data.frame(sr.no.=c(1,2,3,4,5),num=c(1,0,2,1,0))
> View(df)
sr.no. num
1 1
2 0
3 2
4 1
5 0
Теперь я хочу повторить фиксированное значение (скажем, текст «х») в зависимости от числа в 1-м столбце кадра данных. Если есть несколько повторений, я хочу, чтобы они были разделены пробелом.
Желаемая Выход
> View(df)
sr.no. num rep
1 1 x
2 0
3 2 x x
4 1 x
5 0
Я попытался с помощью функции повторений, но она дает некоторые ошибки, и я не в полной мере понять, как работает функция респ. Я думаю, я знаю, что он делает, но не «как» ..
> rep("x",df$num)
Error in rep("x", df$num) : invalid 'times' argument
> rep("x",df[df$num])
Error: (list) object cannot be coerced to type 'integer'
ПРИМЕЧАНИЕ: Фактический кадр данных велик, поэтому мы не можем просто создать список «х» вручную.
В настоящее время второй раздел не связан с моей проблемой выше, но это связано только с функцией rep.
Если я пишу это,
> rep(1:2,df$num)
Error in rep(1:2, df$num) : invalid 'times' argument
я получаю сообщение об ошибке. Но если я напишу это,
> rep(1:length(df$num),df$num)
[1] 1 3 3 4
Получаю вышеуказанный выход. Может кто-то, пожалуйста, объясните мне, во-первых, как решить мою проблему повторения; и затем, как результат, rep дает ошибку в одном случае, а не в другом.
thx .... отлично работает –
FYI, вам не нужно использовать 'cbind' здесь. Вы можете сделать 'df $ rep = stri_dup ('x", df $ num) ' – Heroka