假设我有一个文件"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"
答案 0 :(得分:6)
message()
的默认处理程序通过stderr
将结果发送到cat()
。您可以使用
tc <- textConnection("messages","w")
sink(tc, type="message")
s <- scan("data.txt")
sink(NULL, type="message")
close(tc)
messages
# [1] "Read 5 items"
答案 1 :(得分:1)
sink
utils::capture.output()
是一个方便的包装器
z<-capture.output(s<-scan("data.txt"), type="message")
z
#> [1] "Read 15 items"