楼主: hetongdesan
9196 6

[问答] 关于data.frame()函数的中文显示 [推广有奖]

  • 0关注
  • 0粉丝

高中生

12%

还不是VIP/贵宾

-

威望
0
论坛币
970 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
125 点
帖子
17
精华
0
在线时间
27 小时
注册时间
2012-8-3
最后登录
2021-12-16

楼主
hetongdesan 发表于 2015-3-5 16:30:36 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我尝试将一个含有中文内容的list转化为data.frame存储,代码如下

unlist_ <- unlist(strsplit(sub("\\)","",result),"[(]"))
matrix_unlist <- matrix(unlist_,ncol=2, byrow=T)
ss <- data.frame(matrix_unlist,stringsAsFactors =F)


前两步句都没问题,matrix_unlist结果为
> tail(matrix_unlist)
        [,1]       [,2]   
[1254,] "*ST大化B" "900951"
[1255,] "锦港B股"  "900952"
[1256,] "凯马B"    "900953"
[1257,] "九龙山B"  "900955"
[1258,] "东贝B股"  "900956"
[1259,] "凌云B股"  "900957"


问题出在最后一句以后ss输出为
> tail(ss)
                            V1     V2
1254      *ST<U+5927><U+5316>B 900951
1255 <U+9526><U+6E2F>B<U+80A1> 900952
1256         <U+51EF><U+9A6C>B 900953
1257 <U+4E5D><U+9F99><U+5C71>B 900955
1258 <U+4E1C><U+8D1D>B<U+80A1> 900956
1259 <U+51CC><U+4E91>B<U+80A1> 900957


并没有直接显示中文,若直接写入文件中的话:
write.csv(ss,"C:/.../ee.txt")
文件中并也显示为未转化的字符:
"1254","*ST<U+5927><U+5316>B","900951"
"1255","<U+9526><U+6E2F>B<U+80A1>","900952"
"1256","<U+51EF><U+9A6C>B","900953"
"1257","<U+4E5D><U+9F99><U+5C71>B","900955"
"1258","<U+4E1C><U+8D1D>B<U+80A1>","900956"
"1259","<U+51CC><U+4E91>B<U+80A1>","900957"


讲第三句改为as.data.frame或者data.frame(matrix_unlist[,1],matrix_unlist[,2])都不能解决问题。

求解,怎样正确地存储为中文形式??感谢!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Frame Fram Data FRA RAM 中文

沙发
lww1993 发表于 2015-3-6 10:32:13
matrix_unlist<-matrix(c("*ST大化B","900951","锦港B股","900952",
                         "凯马B","900953","九龙山B","900955",
                         "东贝B股","900956","凌云B股","900957"),byrow=TRUE,ncol=2)
data.frame(matrix_unlist,stringsAsFactors=FALSE)
        X1     X2
1 *ST大化B 900951
2  锦港B股 900952
3    凯马B 900953
4  九龙山B 900955
5  东贝B股 900956
6  凌云B股 900957

as.data.frame(matrix_unlist)
        V1     V2
1 *ST大化B 900951
2  锦港B股 900952
3    凯马B 900953
4  九龙山B 900955
5  东贝B股 900956
6  凌云B股 900957
我用上面方法是可以正确显示中文的。你试试。
已有 1 人评分论坛币 收起 理由
admin_kefu + 50 热心帮助其他会员

总评分: 论坛币 + 50   查看全部评分

藤椅
yywan0913 在职认证  发表于 2015-3-6 10:34:34
转化矩阵都没问题了,为什么不直接就业可以保存的,为什么还要转化data.frame再保存啊

板凳
hetongdesan 发表于 2015-3-9 14:29:46
yywan0913 发表于 2015-3-6 10:34
转化矩阵都没问题了,为什么不直接就业可以保存的,为什么还要转化data.frame再保存啊
matrix保存了也是一样的问题呢。估计还是编码的问题,就是找不出在哪个环节,源数据是从网上抓的GBK编码,我自己转化了一下已经可以正常在控制台显示中文,但是打印出来就是这个样子

报纸
hetongdesan 发表于 2015-3-9 14:31:10
lww1993 发表于 2015-3-6 10:32
matrix_unlist
你好,谢谢你的尝试,但是我的数据是网页抓取的,编码都已经固定,hardcoding我无法实现呢。

地板
yywan0913 在职认证  发表于 2015-3-9 15:22:57
试试
  1. Encoding(matrix_unlist)="UTF-8"
复制代码
?
网页后台的编码默认好像是cp936格式的。

7
lww1993 发表于 2015-3-9 19:17:08
hetongdesan 发表于 2015-3-9 14:31
你好,谢谢你的尝试,但是我的数据是网页抓取的,编码都已经固定,hardcoding我无法实现呢。
你可以将矩阵写入一个文件中。再读取成data.frame就行。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-27 03:56