2011-02-15 75 views
3

我做了一個矩陣,我想將它導出到Excel中。矩陣如下所示:出口矩陣到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") 

,但我得到這個錯誤:

The Perl script 'WriteXLS.pl' failed to run successfully.

我GOOGLE了它,但我無法找到一個解決方案。

在此先感謝。

回答

11

任何理由爲什麼你不能只使用write.csv

write.csv(mymatrix, "test.csv")

它導入Excel和你設置!

PS:我假設你沒有在WriteXLS調用中的變量名稱周圍加上引號,對吧?

+2

有很多理由不使用CSV,但更多的時候處理非數字輸入。如果您與非技術人員一起工作,通常會導致字符集混亂和難以跟蹤的導入問題,尤其是涉及到區域設置不同的十進制和分隔字符時。 – Ruben 2013-03-07 12:40:06

2

很難看到正在發生的事情在這裏完全吻合。可能是幾件事情。

我認爲寫一個矩陣excell最簡單的方法是使用write.table()並導入Excel中的數據。這需要一個額外的步驟,但它也保持在一個很好的格式的數據。

如果foo是你的矩陣:

write.table(foo,"foo.txt") 

如果你得到一個錯誤,也許特里結構強迫對象的矩陣:

write.table(as.matrix(foo),"foo.txt") 

是否矩陣包含在上三角值呢?也許做一個完整的矩陣的工作原理:

foo<-foo+t(foo) 
write.table(as.matrix(foo),"foo.txt") 

但這些都是在黑暗中都只是隨機的鏡頭,因爲我沒有一個矩陣的工作。

編輯:在響應於對方的回答,您可以在兩個write.table()write.csv()(其是具有不同的默認值相同的函數)col.names=FALSErow.names=FALSE除去柱和rownames。

7

如果您不介意Excel 2007格式,您也可以檢查xlsx,因爲xlsx不依賴Perl(儘管取決於rJava)。

加載通過library(xlsx)的裝箱率後剛剛嘗試以下操作:

write.xlsx(USArrests, "/usarrests.xlsx") 
10

(這似乎給您正在使用Excel中的一個合理的假設)在Windows上另外一個選擇:

你可以寫一個矩陣

write.table(mymat, 'clipboard', sep='\t') 

然後就進入Excel中,單擊單元格要爲t:使用如下命令(或數據幀)到剪貼板他左上角的單元格,然後做一個粘貼,你的矩陣在那裏(sep='\t'對於Excel正確解釋它很重要)。

這與其他答案類似,但您不需要磁盤上的中間文件。

0

我在重新安裝strawberry perl後遇到了同樣的問題:在調試R中的WriteXLS函數後,我發現perl模塊Text :: CSV_XS從我全新安裝中丟失。我從DOS命令行安裝了這個模塊:

perl -MCPAN -e shell 
install Text::CSV_XS 

之後,WriteXLS工作正常。

-1
upper # matrix name 

write.xlsx2(upper,file = "File.xlsx", sheetName="Sheetname",col.names=TRUE, row.names=TRUE, append=TRUE, showNA=TRUE)