You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言使用sink导出文本文件出现异常字符的问题咨询

问题原因

你看到的[38;5;246m这类奇怪字符是ANSI转义序列,是R控制台用来给文本上色、设置字体格式(斜体、下划线)的控制码,控制台能识别这些码显示格式,但纯文本文件不会解析,就会原样保留下来。
这里输出带ANSI码是因为你用到了tibble格式的输出,infer包返回的prop_test结果是tibble,而tidyverse系列包默认会开启彩色输出,输出到非控制台的文件时也会默认携带这些格式码。

解决方法

可以任选以下任意一种方案解决:

  • 方案1:全局关闭ANSI格式输出
    在运行sink前加一行代码,关闭所有ANSI颜色和格式输出:
options(crayon.enabled = FALSE)

如果后续需要恢复控制台彩色输出,跑完sink代码后再改回options(crayon.enabled = TRUE)即可。

  • 方案2:打印tibble时强制关闭颜色
    不用改全局设置,只在打印结果的时候调用print()的参数关闭格式,把循环里的print(out[i])改成:
print(out[i], num_colors = 0)

这个参数是tibble的print方法自带的,num_colors=0就会输出无格式的纯文本。

  • 方案3:转换为普通data.frame再打印
    如果不需要保留tibble的输出格式,也可以转成基础的data.frame再打印,天然不带ANSI码:
print(as.data.frame(out[i]))

内容的提问来源于stack exchange,提问作者NewBee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 03:15:03