相关疑难解决方法(0)

将打印的消息转换为字符向量

假设我有一个文件"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

6
推荐指数
1
解决办法
700
查看次数

R testthat包:如何在使用test_file()时看到message()的输出

我在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()文本?

r testthat

5
推荐指数
2
解决办法
2258
查看次数

标签 统计

r ×2

testthat ×1