s的print
方法data.frame
具有很好的自动填充功能。通常,字符串在左侧用空格填充以确保右对齐(默认情况下)。您可以通过捕获打印输出来利用这一点。例如,使用您的d
:
> print(d, print.gap = 0, row.names = FALSE)
c1
4
-1.5
5
-3
该参数print.gap = 0
确保最长的字符串前面没有额外的填充空格。row.names = FALSE
防止打印行名。
这种情况有几个特殊之处:列名比数据中最长的字符串短,并且data.frame
只有一列。概括地说,您可以对数据进行子集化unname
:
myChar <- unname(d[, 1, drop = FALSE])
然后,您可以使用以下方法捕获print
ed 对象capture.output
:
> (dStr <- capture.output(print(myChar, print.gap = 0, row.names = FALSE)))
[1] " NA" " 4" "-1.5" " 5" " -3"
由于还打印了列名,因此您可以对对象进行子集化:
> dStr[-1]
[1] " 4" "-1.5" " 5" " -3"
这样,您不必知道最长的字符串有多长,并且可以处理大多数数据类型,而不仅仅是字符。