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

R 将打印的消息转换为字符向量,r,R,假设我有一个文件“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) 我想检索消息读取15项作为字符向量。我知道我可以通过键入last.w

假设我有一个文件
“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)
我想检索消息
读取15项作为字符向量。我知道我可以通过键入
last.warning
,获得上次录制的警告,并可以将其转换为带有
名称(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"

tc在
utils::capture.output()


z事后使用
length
有什么不对?是我的错,我编辑了这个问题。我想大致了解如何将信息转化为字符vectors@RichardScriven您可能知道,
capture.output
sink
通常会起作用。我不太明白为什么它们在这里不起作用。sink不起作用,因为message有一个对
cat
的自定义调用,该调用指定
file=stderr()
tc <- textConnection("messages","w")
sink(tc, type="message")
s <- scan("data.txt")
sink(NULL, type="message")
close(tc)

messages
# [1] "Read 5 items"
z<-capture.output(s<-scan("data.txt"), type="message")
z
#> [1] "Read 15 items"