String Alignment
Align a vector of strings to the left, to the right, to the center or to the first occurance of a specified character, e.g. to the decimal separator. Alignment is achieved by padding the strings with empty spaces (which evidently only will have an alignment effect if the text is displayed with a monospaced font).
StrAlign(x, sep = "\\r")
x |
a character vector to be aligned. |
sep |
the character on whose position the strings will be aligned. Left alignment can be requested by setting |
Alignment to the left or right leave no room for misinterpretation. The function will determine the maximum string size in the vector, resize all the strings to this size by padding empty spaces either at the beginning or at the end.
cbind(StrAlign(c("here", "there", "everywhere"), sep = "\r")) [1,] " here" [2,] " there" [3,] "everywhere"
When it comes to center strings, it's not clear where to place strings with an even length in case the maximum length is odd (or vice versa). We will put the shorter distance of an uneven string to the left (note the second term, that has 2 spaces on the left and 3 spaces on the right).
cbind(StrAlign(c("here", "there", "everywhere"), sep = "\c")) [1,] " here " [2,] " there " [3,] "everywhere"
Any specific length of the strings can be created by StrPad
if required.
In case of a given separator the strings will be aligned towards this separator. If a string does not contain the separator, the affected string will be aligned as if it had a separator as last character. This seems to be a good default, when integer numbers are to be aligned with numerical values. Note that the character length of the resulting strings can excceed the maximum length of the supplied strings.
The character strings will not be pruned of whitespaces, if the requested alignment does not explicitly require it. StrTrim
can be used for that.
a character vector containing the aligned strings
Andri Signorell <andri@signorell.net>
# align on (the first occuring) B x <- c("ABCDMNB", "CDGHEBK", "BCI") cbind(StrAlign(x, sep="B")) # align to decimal point z <- c(" 6.0", "6.00 ", " 45.12 ", "784", NA) cbind(StrAlign(z, sep=".")) # right align, the width will be the max number of characters in x cbind(StrAlign(x, sep="\\r")) # left align cbind(StrAlign(x, sep="\\l")) # center cbind(StrAlign(x, sep="\\c"))
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.