2014-10-01 376 views
26

我試圖創建csv文件的元素的情節,看起來像這樣:參數意味着,不同的行數:8,20

h1,h2,h3,h4 
a,1,0,1,0 
b,1,1,0,1 
c,0,0,1,0 

我嘗試下面的代碼,但我收到一個錯誤說

Error in data.frame(id = varieties, attr(mat, "row.names"), check.rows = FALSE) : 
    arguments imply differing number of rows: 8, 20 

我的示例數據有8列和20行(不包括標題和行名稱)。我試圖在網上查找並嘗試實施一些修復程序,但問題仍然存在。我非常感謝任何幫助。

mat <- read.csv("trial.csv", header=T, row.names=1) 
varieties = names(mat) 
df <- data.frame(id=varieties,attr(mat, "row.names"), check.rows= FALSE) 
+0

哪一行會引發錯誤?您是否可以逐行運行腳本並報告結果?是否可以共享文件? – 2014-10-01 17:59:06

+0

@MylesBaker'df < - data.frame(id = variety,attr(mat,「row.names」),check.rows = FALSE)'給出錯誤。 – abn 2014-10-01 18:00:45

+1

只有'mat'是一個方形矩陣(nrows = ncols),這纔會起作用。你想實現什麼?也許一個'list'更適合你的需求......或者看看'cbind.fill' [這裏](http://stackoverflow.com/questions/7962267/cbind-a-df-with-an-empty-df -cbind-fill) – EDi 2014-10-01 18:10:53

回答

23

您的data.frame mat是矩形的(n_rows!= n_cols)。

因此,您不能將data.frame作爲列和rownames之外的列,因爲data.frame中的每列必須具有相同的長度。

也許這就夠你的需求:

require(reshape2) 
mat$id <- rownames(mat) 
melt(mat) 
6

我有同樣的錯誤信息,所以我去谷歌上搜索了一下,我設法用下面的代碼修復它。

df<-data.frame(words = unlist(words)) 

單詞是一個字符列表。

這是爲了防止其他人需要輸出爲數據幀。

相關問題