我不熟悉用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中打印彩色文本,我没有其他选择。感谢您的帮助。
答案 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),但同时也会丢失颜色。所以我不相信目前有可能