r - R 中的下划线列名

标签 r string dataframe crayon

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

我尝试保存一个字符串,然后将其与

一起使用
library(crayon)

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

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

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

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

请告诉我如何使列名称带有下划线。

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

最佳答案

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

如果您不想这样做,则必须编写自己的 print.data.frame 函数,similar to how tibble does 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输出,并用下划线格式的版本替换第一行(=列标题)。

(请注意,如果列名称中存在空格,则上述代码将失败。)

关于r - R 中的下划线列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60546084/

相关文章:

r - 有条件地向 data.frame 添加行

r - R中5个排名的频率统计

r - 在 R Shiny 中,如何在侧边栏面板的指定部分周围绘制一个框?

r - Auto.arima() 函数不会产生白噪声。我还应该如何进行数据建模

c - 当输入是 int 和 string 的混合时,scanf 读取两次

python - 将 Dataframe 分割成更小的 DatafFames

R - 间隔时间

C++:在新基础上生成组合

java - 如何检查字符串中的字母序列是否按顺序出现?

python - 如何使用字典从 Pandas DataFrame 列中获取值