Нет способа выровнять текст в смысле выравнивания по правому краю / по центру / и т.д. в gWidgets.
Я рекомендую моноширинные шрифты в соответствии с предложением @Dason (хотя для меня это по умолчанию).
С точки зрения вашего кода вы можете немного его очистить:
- Вам не нужен цикл при создании str.split (ничего не зависит от
i
ивы пишете более str.split
каждый раз) - Вы можете устранить петли, которые вы используете для размещения вкладок в
str.split[[i]]
- Вам не нужно добавлять каждую строку
str.split
отдельно, вы можете сделать все сразу.
В итоге:
x <- c(123.4, 5.6)
y <- c(1.2, 3.657)
z <- c(12345.6, 789.4)
df <- data.frame(x, y, z)
df.co <- capture.output(df) # get df as text
# @@ don't need loop
str.split <- strsplit(df.co, "\\s+") # split every line in its components
w3 <- gwindow()
gt3 <- gtext(container=w3)
# @@ collapse each str.split[[i]] by joining with '\t'.
str.joined <- sapply(str.split,function(bits) paste(bits,collapse='\t'))
insert(gt3,str.joined)
В качестве альтернативы, вы можете заменить все после df.co <- capture.output(df)
на:
insert(gt3,df.co)
(выполните два рядом друг с другом и сравните: insert(gt3,df.co)
выравнивает по правому краю каждый столбец кадра данных, точно так же, как при вводе df
; используемый метод (insert(gt3,str.joined)
) left - выравнивает каждый столбец.
# insert(gt3,str.joined)/method in your question
x y z
1 123.4 1.200 12345.6
2 5.6 3.657 789.4
# insert(gt3,df.co)
x y z
1 123.4 1.200 12345.6
2 5.6 3.657 789.4