在R函数的多个输出中输出彩色文本

时间:2019-08-15 17:58:35

标签: r function text colors

我不熟悉用R编写函数。当一个函数创建多输出时,我将这些输出聚合到一个列表中,并使该函数返回该列表。此方法还允许输出简单文本。但是,我似乎无法打印彩色文本。

一个例子:

library (crayon)

my_function <- function (a = 3, b = 6) {
    first_result <- a * 3
    second_result <- b / a
    print (list (first_result, 
                 second_result, 
                 "my_text"))
}

my_function()

它熄灭了(对我来说还可以):

[[1]]
[1] 9

[[2]]
[1] 2

[[3]]
[1] "my_text"

现在我想看到彩色的“ my_text”(有效):

cat (green ("my_text")) 

但是,当放置在列表中时,行为不是我想要的-文本首先显示,列表中的第一个参数随之出现:

x <- 5
list (x, cat (green ("my_text")))

比较:

list (x, "my_text")

这种行为对我来说有点不走运-我希望函数在结果之后显示出彩色的文本行。我的尝试

my_function <- function (a = 3, b = 6) {
    first_result <- a * 3
    second_result <- b / a
    print (list (first_result, 
                 second_result, 
                 cat (green ("my_text"))))
}

my_function()

当然没有解决。不幸的是,对于在R中打印彩色文本,我没有其他选择。感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

Cat不返回变量,而是返回NULL

绿色输出是否需要在列表中?如果没有,那可以工作:

my_function <- function (a = 3, b = 6) {
first_result <- a * 3
second_result <- b / a
print (list (first_result, 
           second_result 
           ))
cat(green ("my_text"))
}

my_function()

我尝试使用capture.output(),但它只捕获文本,而不捕获颜色。

print(capture.output(cat(green ("my_text"))))

我还尝试过使用R降价(https://rmarkdown.rstudio.com/index.html),但同时也会丢失颜色。所以我不相信目前有可能