【发布时间】:2019-12-22 03:43:46
【问题描述】:
我是在 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 中打印彩色文本没有其他想法。感谢任何帮助。
【问题讨论】:
-
cat()用于将结果输出到控制台,它返回值NULL。因此,当 R 解释您的list()调用时,它会看到cat()并立即执行其操作并将“我的文本”输出到控制台,然后将NULL作为第三个元素隐藏起来。 “我的文字”是结果的相关部分,还是更多地提醒用户? -
感谢您的澄清。 “我的文本”并不是结果的真正相关部分。我的目标是使用彩色文本作为函数不同结果的标题(我知道将这些“标题”作为单个对象存储在列表中并不是最优雅的方法 - 由于我对编程的了解有限,我根本没有其他方法想法...)