3

你如何在 R 中为列名加下划线?

我尝试保存一个字符串,然后使用它

library(crayon)

string1 <- underline("hello")
string2 <- underline("hello2")

colnames(table) <- c(string1, string2)

但是 string1 打印为"\033[4mhello\033[24m".

String2 打印为"\033[4mhello2\033[24m"

请让我知道如何让列名加下划线。

我只想让列名脱颖而出,即使在打印到控制台时更改文本的颜色也可以

4

1 回答 1

2

矩阵和 data.frames 的默认打印代码在内部处理不可打印的字符,并将它们转义。这就是为什么 ANSI 转义字符代码'\033'被转义为 `'\033',而不是直接打印的原因。

如果你不想要这个,你将不得不编写自己的print.data.frame函数,类似于 tibble 的 this。正确地执行此操作需要相当多的逻辑(因此也需要代码)。但是,您可以作弊:

print.data.frame = function (x, ...) {
    output = capture.output(base::print.data.frame(x, ...))
    colnames = crayon::underline(colnames(x))
    regmatches(output[1L], gregexpr('\\S+', output[1L]))[[1L]] = colnames
    cat(output, sep = '\n')
}

将捕获标准print.data.frame输出,并将第一行(= 列标题)替换为下划线格式的版本。

(请注意,如果您的列名中有空格,上述代码将失败。)

于 2020-03-05T14:15:55.760 回答