有没有办法将 R 打印输出作为字符串?
Is there a way to get R print ouput as string?
有没有一种简单的方法可以将 print 的输出作为字符串变量获取? 类似于:
output_string = print(object)
函数print()
恕我直言,有一种相当“智能”的方式将对象分别表示为字符串的对象信息。因此,能够处理此输出将很有用。
我认为 print()
所做的只是在调用它的对象上调用 toString()
方法。但是,toString(object)
会给出不同的结果,我想获取 print(object)
生成的字符串...只是不作为控制台的输出,而是存储在变量中。
我的背景:
我创建了一个随机森林模型。做 print(rf)
给了我一些关于模型的基本统计数据,我想将其写入日志文件,而 toString(rf)
给了我一个巨大的字符串,其中似乎是完整的实际字符串表示树(分裂等)。所以我想做:
rf = randomForest(...)
fileConn = file("rf.log")
writeLines(c(">>> random forest:", print(rf) ), fileConn)
close(fileConn)
我试图从 docs 获得一些关于此的信息,但这似乎不是一个广告功能。关于 invisible(rf)
,我希望这会做我想做的事,但它似乎只是复制了对象。
我想这可能是您想要的?
# As vector:
res_vec <- capture.output(
print(df)
)
cat(res_vec)
# As scalar:
res_scalar <- paste0(capture.output(
print(df)
), collapse = "\n")
cat(res_scalar)
数据:
df <- data.frame(Mason_Id = sample(c("Mason1", "Mason2","Mason3","Mason4","Mason5","Mason6"), 12, T),
Registration_Date = c("01-08-2020", "01-08-2020","05-08-2020","07-08-2020",
"02-09-2020", "02-09-2020","02-09-2020",
"03-09-2020","04-09-2020","01-10-2020","02-10-2020",
"06-10-2020"), Token_Count = runif(12, 10, 100), stringsAsFactors = FALSE)
您还可以查看 sink()
函数,因为它将所有输出捕获到通常显示在控制台中的文本文件中。
来自 ?sink
:
sink("sink-examp.txt")
i <- 1:10
outer(i, i, "*")
sink()
有没有一种简单的方法可以将 print 的输出作为字符串变量获取? 类似于:
output_string = print(object)
函数print()
恕我直言,有一种相当“智能”的方式将对象分别表示为字符串的对象信息。因此,能够处理此输出将很有用。
我认为 print()
所做的只是在调用它的对象上调用 toString()
方法。但是,toString(object)
会给出不同的结果,我想获取 print(object)
生成的字符串...只是不作为控制台的输出,而是存储在变量中。
我的背景:
我创建了一个随机森林模型。做 print(rf)
给了我一些关于模型的基本统计数据,我想将其写入日志文件,而 toString(rf)
给了我一个巨大的字符串,其中似乎是完整的实际字符串表示树(分裂等)。所以我想做:
rf = randomForest(...)
fileConn = file("rf.log")
writeLines(c(">>> random forest:", print(rf) ), fileConn)
close(fileConn)
我试图从 docs 获得一些关于此的信息,但这似乎不是一个广告功能。关于 invisible(rf)
,我希望这会做我想做的事,但它似乎只是复制了对象。
我想这可能是您想要的?
# As vector:
res_vec <- capture.output(
print(df)
)
cat(res_vec)
# As scalar:
res_scalar <- paste0(capture.output(
print(df)
), collapse = "\n")
cat(res_scalar)
数据:
df <- data.frame(Mason_Id = sample(c("Mason1", "Mason2","Mason3","Mason4","Mason5","Mason6"), 12, T),
Registration_Date = c("01-08-2020", "01-08-2020","05-08-2020","07-08-2020",
"02-09-2020", "02-09-2020","02-09-2020",
"03-09-2020","04-09-2020","01-10-2020","02-10-2020",
"06-10-2020"), Token_Count = runif(12, 10, 100), stringsAsFactors = FALSE)
您还可以查看 sink()
函数,因为它将所有输出捕获到通常显示在控制台中的文本文件中。
来自 ?sink
:
sink("sink-examp.txt")
i <- 1:10
outer(i, i, "*")
sink()