首页 > 解决方案 > R中write.table的格式问题,utf-8原始编码

问题描述

有问题write.tablechr2在控制台中正确显示,但在保存的 txt 文件中失败。

> chr1 = chr2 = rep(NA, 8)
> for(i in 1:8){
+   chr1[i] = letters[i]
+   chr2[i] = intToUtf8(10240+2^(i-1))
+ } 
> 
> chr1
[1] "a" "b" "c" "d" "e" "f" "g" "h"
> chr2
[1] "⠁" "⠂" "⠄" "⠈" "⠐" "⠠" "⡀" "⢀"
> 

write.table(cbind(chr1, chr2), file = "chr2.txt")

chr.txt

我可以知道如何以与控制台完全相同的方式打印 txt 文件吗?谢谢!

我的操作系统和 R 版本:

version
               _                           
platform       x86_64-w64-mingw32          
arch           x86_64                      
os             mingw32                     
system         x86_64, mingw32             
status                                     
major          4                           
minor          0.3                         
year           2020                        
month          10                          
day            10                          
svn rev        79318                       
language       R                           
version.string R version 4.0.3 (2020-10-10)
nickname       Bunny-Wunnies Freak Out

---------------- 06 年 6 月更新 ----------------

事实上,我真正想做的是保存一个“txt图片”,如:

⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣆⢀⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⡟⠉⠻⣿⣦⢀⠘⣿⣿⣿⣿⣿⣿⡏⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣦⡀⠈⠻⣧⢀⠘⢿⡟⢠⣤⣌⡇⢀⣴⣅⣤⣄⠙⡟⢡⣤⣈⡇⢸⠟⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⡿⠉⠛⢿⣿⣄⢀⠈⢳⡀⢸⣧⣈⡉⠙⠇⢸⣿⠛⣉⣉⢀⠁⣾⣿⣿⡇⢀⡀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷ ⣦⣀⢀⠈⠙⠷⣄⢀⣽⣿⡟⠻⠿⠃⣠⠘⢿⢀⠿⠟⢀⣇⠘⠿⠛⡇⢸⣷⡀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠻ ⠿⣿⣦⣄⡀⠈⣿⣿⣿⣿⣶⣶⣾⣿⣷⣾⣷⣶⣾⣶⣿⣷⣶⣾⣷⣾⣿⣷⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⣿⣧⣄⣀⢀ ⢀⢀⠉⠙⢺⣿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠁⢀⡇⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⢀⣿⡿⠿⠿⠿⠿ ⠶⠶⠤⣼⣿⢀⣿⡿⠋⠉⠛⡏⠉⣿⡏⠉⡟⠋⠉⠻⡟⠉⠋⠉⠃⢀⠙⡇⢀⣿⠟⠉⠉⠻⠉⠹⣿⠉⢻⡟⠉⡇⢀⣿⣇⣀⣀⣀⣀⣀ ⣀⣀⣿⣿⢀⣿⠁⢠⣶⢀⢰⢀⢹⢀⢸⢀⠐⠓⢀⠁⢀⣰⣶⡇⢀⣶⡇⢀⣿⢀⢰⡆⢀⠃⢀⡇⢀⠈⠇⢀⡇⢀⠿⠿⠿⠿⠿⠿⠿⠿ ⠿⠿⠿⢀⣿⡀⠘⠿⢀⢸⡆⢀⢀⣿⢀⠰⡶⠶⡆⢀⣿⣿⡇⢀⣿⡇⢀⢿⢀⠸⠇⢀⣼⢀⢀⣸⢀⢀⣸⣇⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀ ⣀⣀⣀⣿⣷⣄⣀⣠⣿⣿⣀⣸⣿⣦⣀⣀⣠⣧⣀⣿⣿⣇⣀⣿⣷⣄⣀⣦⣀⣀⣴⣿⣆⣀⣿⣇⣀⣿</p>

我已将代码和示例图片上传到 GitHub:

https://github.com/CarltonChen/TxtDotPic

请看一看。

标签: runicodeutf-8write.table

解决方案


不幸的是,将这两个向量强制转换为 data.frame 以将其写入表格已经将字符转换为 unicode 引用。使用时可以看到data.frame(chr1,chr2)

坦率地说,我不知道如何将 unicode 符号写入表,但如果您能够编写文件的行(将值与 连接'\t'),您可以使用writeLines()本机编码将它们写入文件:

f = file("specialchar.txt",open="w",encoding="native.enc")
writeLines(paste(chr1,chr2,sep='\t'),con=f, useBytes=T)
close(f)

当我这样做时,我得到以下结果:

在此处输入图像描述


推荐阅读