コンテキスト:私は遺伝子とオントロジーで作業していますが、私の質問はRスクリプトの作成に関係しています。R、適用機能内で非リスト(およびその他の)関数を追加するにはどうすればよいですか?
データフレーム内のGO:IDを、データベースから抽出した対応する用語で置き換えたいとします。
これは私のソースデータフレームです。データベースへの要求が非常に簡単に見える
>gene_list_and_Go_ID
V1 V2
2563 Gene1 GO:0003871, GO:0008270, GO:0008652, GO:0009086
2580 Gene2 GO:0003871, GO:0008270, GO:0008652, GO:0009086
12686 Gene3 GO:0003871, GO:0008270, GO:0008652, GO:0009086
14523 Gene4 GO:0004489, GO:0006555, GO:0055114
:ID(V2):これは、(V1)および関連GO遺伝子のリストである
>select(GO.db, my_Go_id, "TERM", "GOID")
I手動でデータベースに対処するために、次の行を試みそれはうまくいった:
>my_Go_id = unlist(strsplit("GO:0008270, GO:0008652, GO:0009086", split=", "))
>select(GO.db, my_Go_id, "TERM", "GOID")
GOID TERM
1 GO:0008270 zinc ion binding
2 GO:0008652 cellular amino acid biosynthetic process
3 GO:0009086 methionine biosynthetic process
私の問題:私はこのプロセスを自動化できません! 正確には、各行に対して、データベースに質問するために、データフレームの列n°2からベクトルに各文字列を変換する必要があります。 そして、データフレームのGO:IDを要求の結果で置き換える必要があります。起動するには
1 /は、私は私のデータフレームに "適用" 機能で "非公開に" 機能を入れてみました:
apply(gene_list_and_Go_ID,1,unlist(strsplit(gene_list_and_Go_ID[,2], split=", ")))
私が得た:
Error in strsplit(ok, split = ", ") : non-character argument
2 /続いて、適用機能内でデータベースにリクエストを追加することはできますか?
3 /最後に、データベース要求の結果によって列n°2を置き換える方法がわかりません。あなたの助けのための
V1 V2
2563 Gene1 GOID TERM
1 GO:0008270 zinc ion binding
2 GO:0008652 cellular amino acid biosynthetic process
3 GO:0009086 methionine biosynthetic process
ありがとう:
これは除外「理想的な」結果の一例です。
は、この非常に詳細な回答のために、あなたの時間をありがとう。多くのものは私のために全く新しいものです(paste0、with c、rbind、rep、lengths ...)。私はこれらの機能についてもっと知りたいと思っています。 :-) –