假设我有一个文件"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)
用scan
将文件读入R,一条消息与数据一起传递。
( s <- scan("data.txt") )
# Read 15 items
# [1] 13 14 4950 20 50 4949 22 98 4948
# [10] 30 58 4947 43 48 4946
我想检索消息Read 15 items
作为字符向量。我知道我可以通过输入last.warning
获得最后记录的警告,并且可以将其转换为具有names(last.warning)
的字符向量,但是没有last.message
这样的对象。
是否有一种方法将输出的消息转换为字符向量?期望的结果是
[1] "Read 15 items"
message()
的默认处理程序通过cat()
将结果发送给stderr
。你可以用
tc <- textConnection("messages","w")
sink(tc, type="message")
s <- scan("data.txt")
sink(NULL, type="message")
close(tc)
messages
# [1] "Read 5 items"
在utils::capture.output()
中有一个方便的sink
包装
z<-capture.output(s<-scan("data.txt"), type="message")
z
#> [1] "Read 15 items"