gpt4 book ai didi

r - 如何打印带有颜色的 R 数据框?

转载 作者:行者123 更新时间:2023-12-04 11:56:34 26 4
gpt4 key购买 nike

蜡笔包,可以创建彩色字符串:

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
write.table ,可以得到带有颜色的表格:
enter image description here
但是对齐丢失了。如何获得具有良好对齐的彩色数据框?
colorDF包允许在数据框中设置颜色,但不允许做我想做的事。我想要的是能够在列中每次出现这个词时将一个词标记为红色。 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){
我要这个词 functioncode列为红色。

最佳答案

您可以使用 tibble而不是 data.frame因为它可以很好地打印矢量,请参阅 vignette("pillar", package = "vctrs") .
特别是 :

You can get basic control over how a vector is printed in a tibble by providing a format() method


要回答您的问题,您可以创建一个 function_red类扩展 character ,见 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)
enter image description here

关于r - 如何打印带有颜色的 R 数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68489214/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com