我制作了一个矩阵,我想将它导出到Excel。矩阵看起来像这样:
1 2 3 4 5 6 7
2 0.4069264
3 0.5142857 0.2948718
4 0.3939394 0.4098639 0.3772894
5 0.3476190 0.3717949 0.3194444 0.5824176
6 0.2809524 0.3974359 0.2222222 0.3388278 0.3974359
7 0.2809524 0.5987654 0.3933333 0.4188713 0.4711538 0.3429487
8 0.4675325 0.4855072 0.4523810 0.4917184 0.3409091 0.4318182 0.4128788
9 0.3896104 0.5189594 0.4404762 0.2667549 0.5471429 0.3604762 0.3081502
10 0.4242424 0.4068878 0.3484432 0.2708333 0.4766484 0.3740842 0.4528219
11 0.3476190 0.3942308 0.2881944 0.3228022 0.4711538 0.2147436 0.3653846
12 0.6060606 0.3949830 0.2971612 0.3541667 0.5022894 0.3484432 0.4466490
13 0.4675325 0.5972222 0.6060606 0.3670635 0.4393939 0.3939394 0.3695652
14 0.4978355 0.4951499 0.4480952 0.4713404 0.3814286 0.3147619 0.4629121
15 0.4632035 0.4033883 0.4508929 0.3081502 0.4728571 0.3528571 0.4828571
16 0.3766234 0.5173993 0.4771825 0.4734432 0.5114286 0.3514286 0.4214286
17 0.3939394 0.5289116 0.3260073 0.3333333 0.5663919 0.2330586 0.3015873
18 0.3939394 0.3708791 0.2837302 0.4102564 0.3392857 0.2559524 0.4123810
19 0.3160173 0.5727041 0.4885531 0.3056973 0.4725275 0.3827839 0.3346561
20 0.3333333 0.5793651 0.4257143 0.4876543 0.4390476 0.2390476 0.3131868
21 0.5281385 0.3762755 0.4052198 0.2997449 0.4180403 0.2898352 0.4951499
22 0.3593074 0.3784014 0.4075092 0.2423469 0.4908425 0.3113553 0.3430335
23 0.5281385 0.5875850 0.4404762 0.4634354 0.6071429 0.3763736 0.3747795
24 0.3549784 0.6252381 0.5957341 0.4328571 0.4429563 0.4429563 0.3422619
25 0.4242424 0.4931973 0.5054945 0.2142857 0.4670330 0.4285714 0.4312169
26 0.3852814 0.5671769 0.4954212 0.4073129 0.3736264 0.4890110 0.4523810
27 0.5238095 0.3269558 0.5187729 0.4051871 0.5412088 0.5155678 0.5859788
28 0.3160173 0.1904762 0.3205128 0.3384354 0.3429487 0.3173077 0.5123457
29 0.2380952 0.4468537 0.5196886 0.4536565 0.4491758 0.4491758 0.4634039
30 0.4545455 0.4295635 0.4080087 0.4791667 0.3474026 0.3019481 0.4627329
31 0.2857143 0.3988095 0.3397436 0.3443878 0.4294872 0.2756410 0.3456790
32 0.3636364 0.3027211 0.3772894 0.3452381 0.4413919 0.3388278 0.3818342
33 0.3333333 0.4482402 0.4080087 0.4275362 0.2888199 0.4047619 0.4301242
34 0.5411255 0.4825680 0.4043040 0.4417517 0.4748168 0.3850733 0.3708113
35 0.3160173 0.5476190 0.4230769 0.3979592 0.3653846 0.3397436 0.2283951
36 0.4603175 0.4653209 0.4778912 0.5170807 0.3928571 0.4508282 0.4254658
37 0.3939394 0.1955782 0.2490842 0.4047619 0.2490842 0.3516484 0.4559083
38 0.3463203 0.4660494 0.4300000 0.4157848 0.3833333 0.2233333 0.2788462
39 0.5844156 0.4668367 0.3809524 0.3843537 0.4803114 0.3008242 0.5026455
40 0.5454545 0.4902211 0.3740842 0.2946429 0.5279304 0.2971612 0.3293651
41 0.5800866 0.3758503 0.5073260 0.5136054 0.3598901 0.5393773 0.4823633
42 0.4458874 0.3937390 0.3785714 0.4686949 0.3768315 0.3127289 0.4954212
43 0.6536797 0.5740741 0.5533333 0.4453263 0.4866667 0.5400000 0.4358974
44 0.5887446 0.5548469 0.4308608 0.3949830 0.5462454 0.3411172 0.5136684
45 0.4069264 0.4357993 0.4308608 0.3830782 0.4308608 0.3795788 0.4025573
46 0.5974026 0.3826531 0.3672161 0.3954082 0.4441392 0.3159341 0.5141093
47 0.2554113 0.4196429 0.4262821 0.4961735 0.2788462 0.3301282 0.3055556
我尝试了命令:
WriteXLS("my matrix after i converted it to data.frame", "test.xls")
但是我收到了这个错误:
Perl脚本'WriteXLS.pl'无法成功运行。
我用Google搜索了,但我找不到解决方案。
提前致谢。
答案 0 :(得分:11)
您不能只使用write.csv
?
write.csv(mymatrix, "test.csv")
在Excel中导入它并进行设置!
PS:我假设您没有在WriteXLS
来电中为变量名称添加引号,对吗?
答案 1 :(得分:10)
Windows上的另一个选项(鉴于您使用的Excel,这似乎是一个合理的假设):
您可以使用以下命令将矩阵(或数据框)写入剪贴板:
write.table(mymat, 'clipboard', sep='\t')
然后进入Excel,单击要作为左上角单元格的单元格,然后执行粘贴,矩阵就在那里(sep='\t'
对于Excel正确解释它很重要。)< / p>
这与其他答案类似,但您不需要磁盘上的中间文件。
答案 2 :(得分:7)
如果您不介意Excel 2007格式,也可以检查xlsx,因为xlsx不依赖于Perl(虽然取决于rJava)。
通过library(xlsx)
加载包装后,请尝试以下操作:
write.xlsx(USArrests, "/usarrests.xlsx")
答案 3 :(得分:2)
很难确切地看到这里发生了什么。可能有好几件事。
我认为将矩阵编写为excell的最简单方法是使用write.table()
并在excell中导入数据。它需要一个额外的步骤,但它也可以使您的数据保持良好的格式。
如果foo
是您的矩阵:
write.table(foo,"foo.txt")
如果您收到错误,可能会将对象强制转换为矩阵:
write.table(as.matrix(foo),"foo.txt")
矩阵是否也包含上三角形中的值?也许制作一个完整的矩阵有效:
foo<-foo+t(foo)
write.table(as.matrix(foo),"foo.txt")
但是这些都只是在黑暗中随机拍摄,因为我没有可以使用的矩阵。
编辑:在回答其他答案时,您可以删除col.names=FALSE
和row.names=FALSE
中write.table()
和write.csv()
的列和rownames(功能相同)使用不同的默认值。)
答案 4 :(得分:0)
我重新安装了草莓perl之后遇到了同样的问题:在调试R中的WriteXLS函数后,我发现我的全新安装中缺少perl模块Text :: CSV_XS。我从DOS命令行安装了这个模块:
perl -MCPAN -e shell
install Text::CSV_XS
在此之后,WriteXLS工作正常。
答案 5 :(得分:-1)
upper # matrix name
write.xlsx2(upper,file = "File.xlsx", sheetName="Sheetname",col.names=TRUE, row.names=TRUE, append=TRUE, showNA=TRUE)