2015-06-16 13 views
10

Come stampare una lunga lista senza indici?Come stampare una lunga lista senza indici?

L'uscita ottengo:

> print(1:100) 
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 
[19] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 
[37] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 
[55] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 
[73] 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 
[91] 91 92 93 94 95 96 97 98 99 100 

output desiderato:

> print(1:100) 
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 
91 92 93 94 95 96 97 98 99 100 

ho provato con cat() funzione, ma non fa ritorno della linea.

Grazie in anticipo.

+0

try 'cat (1: 100)' –

+0

vedere la mia modifica. non dà quello che voglio – user2682877

risposta

11

Una soluzione pulita è cat ma utilizza l'argomento fill, in combinazione con la funzione format().

cat(format(1:100), fill = getOption("width")) 

che dà

> cat(format(1:100), fill = getOption("width")) 
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 

Non ho provato questo con tutti i tipi di vettori di sapere se il riempimento/splitting è infallibile, ma potrebbe essere sufficiente per le vostre esigenze, se l'allineamento è importante.

Il vantaggio di utilizzare format() qui (piuttosto che paste()) è che format() rilievi delle singole stringhe per una lunghezza comune

> format(1:10) 
[1] " 1" " 2" " 3" " 4" " 5" " 6" " 7" " 8" " 9" "10" 

Se hai appena fill il vettore numerico catted o una rappresentazione incollato, l'allineamento è ancora off:

> cat(1:100, fill = getOption("width")) 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 
> cat(paste(1:100), fill = getOption("width")) 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 
4

considerare l'utilizzo di writeLines() e strwrap() su una stringa opportunamente composta:

writeLines(strwrap(paste(1:100, collapse = " "))) 

che dà

> writeLines(strwrap(paste(1:100, collapse = " "))) 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 
100 

Non è abbastanza ciò che si vuole, ma quasi. Dovresti formattare ciascuno dei singoli elementi del carattere per ottenere il padding corretto.

Parte del problema è che strwrap() distrugge tutti gli spazi ...

+0

più uno per 'strwrap' –

10

prova l'opzione

fill =TRUE 

con

cat() 

Ecco un esempio:

> cat(paste(1:100), fill=TRUE) 

Spezzerà le linee a seconda della larghezza dello schermo.

+1

più 1, mi ha battuto di un secondo –

Problemi correlati