2017-01-06 4 views
1

Есть ли способ иметь другой print.gap для определенного столбца?другое значение print.gap для конкретного столбца

Пример данные:

dd <- data.frame(col1 = 1:5, col2 = 1:5, col3 = I(letters[1:5])) 
print (dd, quote=F, right=T, print.gap=5) 

Выход с print.gap = 5:

 col1  col2  col3 
1  1  1  a 
2  2  2  b 
3  3  3  c 
4  4  4  d 
5  5  5  e 

Желаемый выход (print.gap смесь, первые два с print.gap = 5, третья с печатью. зазор = 12)

 col1  col2   col3 
1  1  1    a 
2  2  2    b 
3  3  3    c 
4  4  4    d 
5  5  5    e 

Я понимаю, что это не может быть достигнуто при любом изменении операторов печати, но, возможно, некоторые из них алюминиевых тернативный метод или предложение. Выход должен быть сохранен в текстовом файле. Также обратите внимание, что решение должно быть достаточно гибким, чтобы не просто увеличить разрыв для последнего столбца, это может быть любой столбец или несколько столбцов с разными print.gaps в кадре данных.

+0

добавить 'д.д. $ COL3 <- паста (подстроку (»», длина (дд $ COL3)), дд $ col3)' между вашими 2 линиями – HubertL

+0

@HubertL - хотя это разрушительное изменение, возможно, печать после выполнения изменения внутри 'transform()' может быть приятной. – thelatemail

+0

Спасибо, Хьюберт, просто попробовал, но, похоже, ничего не меняет, если не увеличивать пробелы в подстроке. Я предполагаю, что вы пытаетесь сделать, это добавить белые пробелы перед данными третьего столбца, что является идеей, но Id вроде бы имеет более элегантный способ. Я смотрю на трансформацию. – Tina

ответ

1

Возможно, есть способ сделать это, указав «правильный» альтернативный метод печати, но вот хакерское решение, которое можно использовать для настройки каждой ширины столбца независимо.

rbind(
    data.frame(lapply(dd, as.character), stringsAsFactors=FALSE), 
    substring("      ", 1, c(1,7,12)) 
) 
# col1 col2   col3 
#1 1  1   a 
#2 2  1   b 
#3 3  1   c 
#4 4  1   d 
#5 5  2   e 
#6 6  2   f 
#7 7  2   g 
#8 8  2   h 
Смежные вопросы