接收器产生奇怪的字符

sink produces weird characters

我正在使用接收器将我的输出粘贴到文本文件:在此示例中使用 gss 数据。

library(gss)
library(infer)

con <- file(paste0(dir_output, "test.txt"),encoding = "UTF-8")
sink(con, split = T)

cols <- gss %>% select(where(is.factor)) %>% select(-sex) %>% names(.)
out <- vector('list', length(cols))
names(out) <- cols
for(i in cols) {
  out[[i]] <- prop_test(gss, reformulate("sex", response = i))
  print(out[i])
}
sink(file = NULL)

输出在 R 控制台中打印得很好,但在文本文件中打印得很奇怪。知道为什么会这样吗?这是文本文件中的输出...

$college
[38;5;246m# A tibble: 1 x 6[39m
  statistic chisq_df p_value alternative lower_ci upper_ci
      [3m[38;5;246m<dbl>[39m[23m    [3m[38;5;246m<dbl>[39m[23m   [3m[38;5;246m<dbl>[39m[23m [3m[38;5;246m<chr>[39m[23m          [3m[38;5;246m<dbl>[39m[23m    [3m[38;5;246m<dbl>[39m[23m
[38;5;250m1[39m 0.000[4m0[24m[4m2[24m[4m0[24m4        1   0.996 two.sided    -[31m0[39m[31m.[39m[31m0[39m[31m91[4m7[24m[39m    0.101

$partyid
[38;5;246m# A tibble: 1 x 3[39m
  statistic chisq_df p_value
      [3m[38;5;246m<dbl>[39m[23m    [3m[38;5;246m<dbl>[39m[23m   [3m[38;5;246m<dbl>[39m[23m
[38;5;250m1[39m      12.9        3 0.004[4m8[24m[4m4[24m

我想问题是您正在使用包 crayon 来使控制台中的输出更具可读性。 要使那些奇怪的字符在您的文本文件中消失,您需要在脚本的开头插入这行代码以修改 options:

options(crayon.enabled = FALSE,"crayon.colors" = 1)

缺点是你会在控制台丢失颜色,但我一直没有找到更好的解决方案...

如果您想在任何时候将颜色放回控制台,则必须输入以下代码行:

options(crayon.enabled = TRUE,"crayon.colors" = 8)