2012-08-22 10 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

ちょうど確かなこと: '投与量'は常に 'resp'のリスト要素と同じくらい多くの要素を持っていますか?そして興味のないところで、出力配列で何をするつもりですか?最終的な要件への「近道」を提案する可能性があります。 –

+0

@Carl はい、線量値はresp(レスポンス)リストのリストとペアになっています。各投薬量についてのこのようなペアリングの数は不明である。 出力data.frameは回帰曲線を当てはめるためにdrmで使用されます。私は 'unlist(lapply(resp、mean))'のようなことをしていましたが、これは回帰曲線を取得しますが、 'modelFit()'の問題を引き起こします。私の適合統計のため、生の線量/応答のペアに変換する必要があります。 – user1616353

答えて

14

rep()unlist()を用いた溶液です。

  • respの各要素の長さと、doseの要素を繰り返すrepを使用。ベクトル

respを有効にする

  • 使用unlistコード:スタックオーバーフローへ

    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

    関連する問題