假设我有一个文件"data.txt",可以使用以下代码创建
m <- matrix(c(13, 14, 4950, 20, 50, 4949, 22, 98, 4948,
30, 58, 4947, 43, 48, 4946), 5, byrow = TRUE)
write.table(m, "data.txt", row.names = FALSE, col.names = FALSE)
Run Code Online (Sandbox Code Playgroud)
将文件读入R scan,消息随数据一起传送.
( s <- scan("data.txt") )
# Read 15 items
# [1] 13 14 4950 20 50 4949 22 98 4948
# [10] 30 58 4947 43 48 4946
Run Code Online (Sandbox Code Playgroud)
我想将消息检索Read 15 items为字符向量.我知道我可以通过键入获得最后记录的警告last.warning,并可以将其转换为字符向量names(last.warning),但没有这样的对象last.message.
有没有办法将输出的消息转换为字符向量?期望的结果是
[1] "Read 15 items"
Run Code Online (Sandbox Code Playgroud) 我在R中使用了优秀的testthat包.我的问题是,在使用test_file时,我无法在正在测试的代码中看到message()函数的任何输出.例如,假设我在名为test_message.R的文件中有以下代码
f <- function() {
message ("Message: Hello world")
cat ("Cat: Hello world\n")
return (1)
}
test_that ("message shows up", {
expect_equal(f(), 1)
})
Run Code Online (Sandbox Code Playgroud)
我按如下方式运行test_file并获得下面的输出
> test_file("test_message.R")
Cat: Hello world
.
Run Code Online (Sandbox Code Playgroud)
所以我没有看到来自message()的文本.
但是,当我自己运行代码时,我确实看到了:
> f()
Message: Hello world
Cat: Hello world
[1] 1
Run Code Online (Sandbox Code Playgroud)
我知道默认情况下,message()写入stderr和cat写入stdout,我猜测test_file"拦截"stderr来测试警告和错误中的文本.有什么方法可以配置东西,所以我在控制台上看到message()文本?