Как напечатать длинный список без индексов?

Как напечатать длинный список без индексов?

Выход, который я получаю:

> 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

Требуемый вывод:

> 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

Я попытался с помощью функции cat(), но не возвращает строки.

Спасибо заранее.

Ответ 1

Чистым решением является cat, но используя его аргумент fill в сочетании с функцией format().

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

который дает

> 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

Я не пробовал это со всеми видами векторов, чтобы знать, является ли заполнение/разделение непогрешимым, но это может быть достаточно для ваших нужд, если важна выравнивание.

Преимущество использования format() здесь (а не paste()) заключается в том, что format() накладывает отдельные строки на общую длину

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

Если вы просто fill обозначенный числовой вектор или вложенное представление, выравнивание по-прежнему отключено:

> 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

Ответ 2

Попробуйте вариант

 fill =TRUE

с

 cat()

Вот пример:

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

Он будет разбивать строки в зависимости от ширины экрана.

Ответ 3

Рассмотрите возможность использования writeLines() и strwrap() в соответствующей строке:

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

который дает

> 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

Это не совсем то, что вы хотите, но близко. Вам нужно будет отформатировать каждый из отдельных элементов символов, чтобы получить правильное дополнение.

Частично проблема заключается в том, что strwrap() уничтожает все пробелы...