2014-09-10 2 views
4

Я использую grid.table в пакете gridExtra, чтобы отобразить список комментариев для комментариев в формате таблицы. Когда комментарии (строковая переменная) превышает заданную длину, я хочу, чтобы она автоматически вставляла разрыв строки «\ n».R: Оберните текст в grid.table, когда строка превышает заданную длину

library(gridExtra) 
df<-data.frame(comments = c("Here is a short string", 
"Here is a long string that needs to be broken in half so that it doesn't run off the page", 
"Here is another short string")) 

grid.newpage() 
print(grid.table(df$comments)) 

Я открыт для использования другого табличного пакета, если эта функция доступна в другом месте.

+0

попробовать выполнить 'RGraphics :: splitString' – baptiste

+0

Когда я бегу, используя splitString печатает только первый комментарий. print (grid.table (splitString (df $ comments))) – Braden

+0

На самом деле это не сработает, потому что splitString пытается вписаться в данный видовой экран, а grid.table настраивает видовое окно для соответствия содержимому (порочный круг). – baptiste

ответ

4

вы можете использовать strwrap,

d = sapply(lapply(df$comments, strwrap, width=50), paste, collapse="\n") 
grid.table(d) 
+0

Работы ... большое спасибо. Раньше я встречался с strwrap, но у меня были проблемы с его работой. Я не использовал команды sapply и lapply. Мне действительно нужно потратить некоторое время на то, чтобы моя голова обернулась вокруг того, как работают эти функции. – Braden

+0

's/lapply (list, fun)' равнозначно 'for (ii in 1: length (list)) fun (list [[ii]])' и собирает результаты в векторе/списке. – baptiste

+0

спасибо. в этом есть смысл. – Braden

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