r - R中write.table的格式问题,utf-8原始编码
问题描述
有问题write.table
。chr2
在控制台中正确显示,但在保存的 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")
我可以知道如何以与控制台完全相同的方式打印 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
请看一看。
解决方案
不幸的是,将这两个向量强制转换为 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)
当我这样做时,我得到以下结果:
推荐阅读
- java - 我在哪里可以在 Eclipse 中找到这个小部件?
- linux - 非法选项 -p /bin/sh: 1: Usage:: not found
- java - Gigya SDK v4 Facebook 登录问题
- c# - 如何使用功能区上的按钮在资源管理器中对电子邮件进行绿色检查?
- corda - Corda — 使用 FilteredTransaction 与交易对手共享状态子集
- angular - 如何使用 TypeScript 提取接口的属性(最好没有 3rd 方库)
- acumos - 关系状态为待处理
- java - Android 上未安装 Android 应用程序错误
- javascript - 如何使用javascript将样式属性从元素A复制到B?
- c# - 在 Unity (C#) 中访问全局游戏数据