Выровнять столбцы слева во фрейме данных - PullRequest
0 голосов
/ 02 ноября 2018

Я хотел бы напечатать фрейм данных, в котором все столбцы выровнены по левому краю. Следующий код не дает ожидаемого результата, поскольку последний столбец выровнен по правому краю.

Вот код:

tab <- data.frame(x = rep("Multi", 7), y = c("BC", "AB", "ABCD", "AER", "A", "A", "OI"), z = c(0.533, 10.658, 0.317, 4, 2000, 0.478, 1.569))

tab$y <- as.character(tab$y)
for(i in 1:dim(tab)[1]){
tab[i,c("y")] <- paste0('"', paste(tab[i,c("y")], collapse="\", \""), '"')
}

tab_format <- apply(tab, 2, format)
write.table(tab_format, file = "test1.txt", sep = " ", row.names = FALSE, col.names = FALSE, quote = FALSE)

Произведенная продукция

Multi "BC"      0.533
Multi "AB"     10.658
Multi "ABCD"    0.317
Multi "AER"     4.000
Multi "A"    2000.000
Multi "A"       0.478
Multi "OI"      1.569

Ожидаемый результат

Multi "BC"   0.533
Multi "AB"   10.658
Multi "ABCD" 0.317
Multi "AER"  4
Multi "A"    2000
Multi "A"    0.478
Multi "OI"   1.569

1 Ответ

0 голосов
/ 02 ноября 2018

Используя пакет pander, вы можете сделать что-то вроде этого (ca_data - это тестовый фрейм данных, который я оставил после другой проблемы):

> library(pander)
> ca_data
            dim1       dim2
text1  1.2143543 -4.3103880
text2 -0.1647548  2.3744269
text3  0.3792852 -0.2677051
text4  0.8941859  0.1106750
text5 -1.5283987 -0.3439418

> panderOptions('table.alignment.default',function(df) ifelse(sapply(df, is.numeric), 'left'))

Это обеспечивает:

 > pander(ca_data)

-------------------------------
  &nbsp;    dim1      dim2     
----------- --------- ---------
 **text1**  1.214     -4.31    
 **text2**  -0.1648   2.374    
 **text3**  0.3793    -0.2677  
 **text4**  0.8942    0.1107   
 **text5**  -1.528    -0.3439  
-------------------------------
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...