2016-08-04 9 views
0

私は、関数を使っていくつかの遺伝子の生存解析を試みています。患者は、「高い」(2)または「低い」(1)の遺伝子発現に従ってグループ分けされる。Rサバイバルパッケージで変数を呼び出す際の問題

Rが自分のコードをどのように理解しているかに問題があります。ここではいくつかのサンプルデータは、次のとおりです。

df <- read.table(header=T, text="TGM5 TGM6 TGM7 TPI1 survival vital.status 
2 1 1 2 1.419178082 2 
2 1 1 1 5 1 
2 1 1 2 1.082191781 2 
1 1 1 1 0.038356164 1 
2 1 2 2 0.77260274 2 
1 1 2 2 2.336986301 1 
2 1 2 1 1.271232877 1") 

次のコードは正常に動作します:私は多くの遺伝子のためにこれをしたいとき

fit<- survfit(Surv(survival, vital.status)~TGM5), data =df) 

私はに実行する問題があります。

> genes <- names(df[1:3]) 
> genes[1] 
[1] "TGM5" 

が、私は、私はエラー

Error in model.frame.default(formula = Surv(survival, vital.status) ~ (genes[1]), : 
    variable lengths differ (found for 'genes[1]') 

を取得

fit<- survfit(Surv(survival, vital.status)~genes[1]), data =df) 

を呼び出す場合、私はそこにあると仮定します。私は、私が興味の遺伝子名の配列/リストを作成しました私がTGM5を直接呼び出したときと、遺伝子リストから要素と呼ばれるときの違いとその解決法は非常に簡単です。私はこれにどのように接近するかについて迷っている。 私はgsub()を使用しようとしましたが、成功しませんでした。

最後に、このコードを多くの遺伝子に展開したいので、私はforループを作成しないようにしたいと思います。ベクトル化された方法がありますか?

多くのありがとうございます。

+1

なぜあなたが使用している '遺伝子[1]'?あなたはすべての遺伝子が必要ですね。 –

+0

私は、実行している問題の例として遺伝子[1]を使用しています。私は最終的にすべての遺伝子を分析したいと思うが、survfit()が複数の遺伝子を一度に取るのが好きかどうかはわからない。 – Tkanno

+1

多分関連するhttp://stackoverflow.com/questions/22617354/object-not-found-error-within-a-user-defined-function-eval-function/ –

答えて

1

このハックは動作します:

survfit(as.formula(paste0("Surv(survival, vital.status)~",genes[1])), data =df) 

Call: survfit(formula = as.formula(paste0("Surv(survival, vital.status)~", 
    genes[1])), data = df) 

     n events median 0.95LCL 0.95UCL 
TGM5=1 2  0  NA  NA  NA 
TGM5=2 5  3 1.42 1.08  NA 

私が一緒になって式を貼り付けた後、式オブジェクトにそれを強要。多くの場合、このために働くだろうが、私はそれが応答引数レベルとして

Surv(survival, vital.status) 

で動作させることができなかったreformulateと呼ばれるよりよい機能があります。

データ

df <- read.table(header=T, text="TGM5 TGM6 TGM7 TPI1 survival vital.status 
2 1 1 2 1.419178082 2 
2 1 1 1 5 1 
2 1 1 2 1.082191781 2 
1 1 1 1 0.038356164 1 
2 1 2 2 0.77260274 2 
1 1 2 2 2.336986301 1 
2 1 2 1 1.271232877 1") 
0

あなたが引用符を削除する必要があります。noquote(genes[1])

+0

残念ながら、それは動作していません。私はそれを試して、同じエラーを取得します。 – Tkanno

関連する問題