当我在R中键入字符向量的名称时,如何在没有不必要的行的情况下进行打印?

时间:2015-06-13 02:41:38

标签: r vector printing

我正在处理一些字符向量,每个元素的大小从4到855不等。 让我们假设这种向量的名称是y。当我键入" y"时,R打印出整个矢量,问题是每个元素的行数相同。因此,如果需要8行来打印855个字符的元素,那么R也会给只有4个字符的元素赋予8行,这样就显示了很多不必要的行

我想删除这些不必要的行。例如,我想要

[1] "a"


[2]"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

打印为

[1] "a"
[2]"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

当我输入此向量的名称时。

如何更改此设置?

2 个答案:

答案 0 :(得分:2)

请注意,您使用额外行添加到打印输出中描述的行为不是通用的。例如,Mac上的R控制台(3.1.2)不会打印您描述的额外行,但是当在终端上运行完全相同的R版本时,我会获得额外的行。

您可以使用cat执行此操作,循环遍历矢量并根据需要构建输出:

> for (i in seq(y)) cat(paste0("[", i, "] \"", y[i], "\"\n"))
[1] "aaaa"
[2] "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
[3] "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
[4] "aa"

答案 1 :(得分:1)

这是一个可重复的例子:

y<-c("aaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "aa")
y

在控制台中返回时,您会注意到前2行在它们下方有间隙。

来自?format的帮助详细说明了正在发生的事情:

“字符向量(以及通过其方法转换为字符向量的对象)的对齐是在显示宽度(参见nchar)上完成的,采用双宽字符和特殊字符的呈现(作为转义序列,包括转义反斜杠但不是双引号:请参阅print.default)。因此宽度由print(quote = FALSE)显示,而不是由cat显示。字符串用空格填充到最宽的显示宽度。(如果是na.encode = FALSE缺少的字符串不包含在宽度计算中,也不进行编码。)“

我认为这里的解决方案是使用cat进行打印。

查看每个元素如何填充空白字符的简单方法是执行以下操作:

format(y, trim=T)