随着crayon包中,可以创建彩色字符串:
library(crayon)
dat <- data.frame(X=c(yellow("foobar"), green("baz")), Y = cyan("qux"))
这是编码后的dat
:
> dat
X Y
1 \033[33mfoobar\033[39m \033[36mqux\033[39m
2 \033[32mbaz\033[39m \033[36mqux\033[39m
With write.table
,可以得到带有颜色的表格:
但对齐丢失了。如何获得具有良好对齐方式的彩色数据框?
The colorDF https://cran.r-project.org/web/packages/colorDF/vignettes/colorDF.html包允许在数据框中设置颜色,但不允许做我想做的事情。我想要的是能够在列中每次出现该单词时将这个单词涂成红色。这df_search
的函数colorDF接近我想要的,但它为找到模式的整个单元格着色,我只想为一个单词着色。
例如,在此数据框中:
# file line code
# 1 folder/f.R 1 f <- function(x){
# 2 folder/subfolder/g.R 1 g <- function(y){
# 3 folder/subfolder/subsubfolder/h.R 1 h <- function(z){
我想要这个词function
in the code
列为红色。
你可以使用tibble
代替data.frame
因为它可以很好地打印矢量,请参阅vignette("pillar", package = "vctrs")
.
尤其 :
您可以通过提供 format() 方法来基本控制如何在 tibble 中打印向量
要回答您的问题,您可以创建一个function_red
类扩展character
, see vignette("s3-vector", package = "vctrs")
:
library(vctrs)
data <- read.table(text="file line code
'folder/f.R' 1 'f <- function(x){'
'folder/subfolder/g.R' 1 'g <- function(y){'
'folder/subfolder/subsubfolder/h.R' 1 'h <- function(z){'
",header=T)
function_red <- function(x = character()) {
vec_assert(x, character())
new_vctr(x, class = "vctrs_function_red")
}
format.vctrs_function_red <- function(x,...) {
gsub("function",crayon::red("function"),vec_data(x))
}
data$code <- function_red(data$code)
tibble::tibble(data)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)