2016-11-18 176 views
1

我有數據R:`ID:在添加ID列時強迫LHS添加到列表中,爲什麼?

 N11.1 N22.2 N33.1 N44.1 N21.1 N31.1 N32.1 
Sinus  1  0  0 0.0  0  0 12.0 
ArrAHB  1  0  0 0.1  0  0 20.9 

,我想與價值SinusArrAHB添加一個額外的列ID

require(lattice) 
Sinus<-c(1,0,0,0,0,0,12) 
ArrAHB<-c(1,0,0,0.1,0,0,20.9) 
Labels<-c("N11.1","N22.2","N33.1","N44.1","N21.1","N31.1","N32.1") 
ID<-c("Sinus","Arr/AHB") 
data.female<-data.frame(Sinus,ArrAHB,row.names=Labels) 
data.female<-t(data.female) 

> data.female$ID<-ID 

Warning message: 
In data.female$ID <- ID : Coercing LHS to a list 

爲什麼ID列的創建導致data.frame脅迫?

P.我的目標是獲得這種數據的形式如herebarchart(N11.1+N22.1+N33.1+N44.1+N21.1+N31.1+N32.1 ~ ID, data=data.female)這需要一個新的ID列here,我不明白爲什麼此ID添加有時工作,有時不。請解釋。

+2

't'返回一個矩陣。你不能使用'$ < - '來分配一個矩陣。因此,R將矩陣強制爲一個列表。你可能以不理想的方式接近這一點,但我不確定情節應該是什麼樣子,因此不能提出一個好的選擇。 – Roland

回答

3

這是拋出警告,因爲轉置t()的結果是矩陣。 Matricies沒有可訪問的列名稱。使用as.data.frame()

這可以工作。您必須強制將矩陣轉換爲數據幀。

Sinus<-c(1,0,0,0,0,0,12) 
ArrAHB<-c(1,0,0,0.1,0,0,20.9) 
Labels<-c("N11.1","N22.2","N33.1","N44.1","N21.1","N31.1","N32.1") 
ID<-c("Sinus","Arr/AHB") 
data.female<-data.frame(Sinus,ArrAHB,row.names=Labels) 
data.female<-as.data.frame(t(data.female)) 

data.female$ID<-ID 

請記住,數據幀是按列而不是按行定義的。數據框定義應按列。

+0

謝謝你,簡單和工作+1 – hhh