2012-08-22 65 views
9

基本上我是在一個向量的產物和LoL具有任意長度的列表的列表之後。如何將矢量和列表列表轉換爲R中的data.frame?

dose<-c(10,20,30,40,50) 
resp<-list(c(.3),c(.4,.45,.48),c(.6,.59),c(.8,.76,.78),c(.9)) 

我可以非常接近與

data.frame(dose,I(resp)) 

的東西,但它並不完全正確。我需要擴大名單的resp列與劑量列的配對值。

所述期望的格式是:

10 .3 
20 .4 
20 .45 
20 .48 
30 .6 
30 .59 
40 .8 
40 .76 
40 .78 
50 .9 
+2

歡迎堆棧溢出! +1 [可重現的例子](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 – Andrie

+0

只是爲了確定:'dose'總是和'resp'中的列表元素一樣多?出於興趣,你打算如何處理輸出數組?我們可能會提出一個「捷徑」來滿足您的最終要求。 –

+0

@Carl 是的,劑量值與resp(響應)列表中的列表配對。每種劑量的配對數量都不得而知。 輸出data.frame在drm中用於擬合迴歸曲線。我正在做'unlist(lapply(resp,mean))'這樣的東西,但是雖然這使我獲得了迴歸曲線,但它引發了'modelFit()'的問題,我最終發現我必須給迴歸原始值我的良好統計數據,因此需要轉換爲原始劑量/響應對。 – user1616353

回答

14

下面是使用rep()unlist()的溶液。

  • 使用rep重複的dose的元素,具有resp每個元件的長度。
  • 使用unlistresp入載體

代碼:

data.frame(
    dose = rep(dose, sapply(resp, length)), 
    resp = unlist(resp) 
) 

    dose resp 
1 10 0.30 
2 20 0.40 
3 20 0.45 
4 20 0.48 
5 30 0.60 
6 30 0.59 
7 40 0.80 
8 40 0.76 
9 40 0.78 
10 50 0.90 
+0

謝謝,這正是我所追求的。 – user1616353

相關問題