2015-10-18 2 views
0

Вот моя ситуация, давайте предположим, что у меня есть этот данные:Генерация текст из вектора с подсчетами

 freq 
hello 1 
bye  2 

Я хочу создать из этих данных строки этой структуры:

"hello bye bye" 

I может сделать это, используя для петель и неэлегантных подходов. Однако мои данные могут содержать до 10000 строк и это не только один вектор, который я хочу обработать. Есть ли эффективный способ сделать это?

ответ

3

Эта строка должна работать для таблиц, матриц и фреймов данных.

paste(rep(rownames(data), data[,1]), collapse = " ") 

Если у вас есть другие столбцы и freq не может быть первым, вы можете использовать data[, "freq"] (или data$freq или data[["freq"]] для кадров данных и dplyr «TBL» объектов) вместо data[,1] быть более явным.

+0

+1 Но я предлагаю всегда выбирать столбцы с помощью '[[index]]' или '$ name' и никогда не использовать' [, index] '. Таким образом, семантика не изменится при изменении класса DF (например, 'tbl_df'' dplyr' разумно переопределяет '[' для установки 'drop = FALSE'). –

+0

@ KonradRudolph - Хорошая точка. Я попытался охватить все случаи, поскольку '' '' и '[[' не могут использоваться в классе "matrix" и "table". Я добавил 'data [[" freq "]]' и ссылка на * dplyr * tbls –

+0

работает как шарм! благодаря – dpalma

 Смежные вопросы

  • Нет связанных вопросов^_^