如何打印没有索引的长列表?
我得到的输出:
> 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()
功能,但它没有进行换行。
提前致谢。
答案 0 :(得分:11)
一个简洁的解决方案是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
答案 1 :(得分:10)
尝试选项
fill =TRUE
与
cat()
以下是一个例子:
> cat(paste(1:100), fill=TRUE)
它会根据屏幕的宽度打破线条。
答案 2 :(得分:4)
考虑在合适的字符串上使用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()
会破坏所有空白......