R: перенос текста в grid.table, когда длина строки превышает заданную.

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

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))

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


person Braden    schedule 10.09.2014    source источник
comment
попробуй RGraphics::splitString   -  person baptiste    schedule 10.09.2014
comment
Когда я запускаю с помощью splitString, он печатает только первый комментарий. печать (сетка. таблица (splitString (комментарии df $)))   -  person Braden    schedule 10.09.2014
comment
на самом деле это не может работать, потому что splitString пытается поместиться в заданном окне просмотра, а grid.table настраивает окно просмотра в соответствии с содержимым (порочный круг).   -  person baptiste    schedule 10.09.2014


Ответы (1)


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

 d = sapply(lapply(df$comments, strwrap, width=50), paste, collapse="\n")
 grid.table(d)
person baptiste    schedule 10.09.2014
comment
Работает... большое спасибо. Я столкнулся с strwrap ранее, но у меня возникли проблемы с его работой. Я не использовал команды sapply и lapply. Мне действительно нужно потратить некоторое время на то, чтобы понять, как работают эти функции. - person Braden; 11.09.2014
comment
s/lapply(list, fun) эквивалентен for(ii in 1:length(list)) fun(list[[ii]]) и собирает результаты в вектор/список. - person baptiste; 11.09.2014