2017-12-04 27 views
0

PubMedから情報を取得するために、RでRISを使用しています。 'Mesh'パッケージ関数は、各引用のMeSH項を得ることを可能にします。それにもかかわらず、データフレームを含むリストです。 対応する引用ID(PMID)の他に、各MeSH用語をリストしたいと思います。 例えば、私は、両方の値を含むテーブルを構築することができる:データフレーム内のデータフレーム内の行をR内のデータフレーム内に抽出する

table = cbind(ArticleId(MedlineObject),Mesh(MedlineObject)) 

最初の列は、文字オブジェクトであるが、もう一つはデータフレームを含むリストです。第一列内の値は、「29145282」だったと2dndコラムの内容は「心筋症、肥大」、「集学治療」と「診断、ディファレンシャル」だった、私が取得したい場合:

"29145282","Cardiomyopathy, Hypertrophic" 
"29145282","Combined Modality Therapy" 
"29145282","Diagnosis, Differential" 

どのようにできました私はこれを達成する?

+2

[再現可能な例](https://stackoverflow.c om/questions/5963269/how-to-make-a-great-r-reproducible-example)を参照してください。最低でも、 'MedlineObject'を生成したコードを含みます。また、 'table'は大きな変数名ではありません(同じ名前の関数 があります)。 – neilfws

+0

こんにちは、以下の@TooYoungで使用されている例は良い例です。 "table"は良い変数名ではありません。それは実際のものではなく、一例に過ぎません。ありがとう – panchtox

+0

それがうまくいくのがうれしいです。あなたはその答えを受け入れるのですか? – TooYoung

答えて

1

私はあなたのデータを持っていないので、medline objectの例としてmyeloma使用したいと思います。 myelomaRISmedパッケージ内のメドリンデータです。

まずmapplycbindして、リスト内のすべてのデータフレームにIDを追加します。その後、

MedList = mapply(cbind, "ID"=ArticleId(myeloma),Mesh(myeloma),SIMPLIFY = FALSE) 

そしてdo.callrbindで1つのデータフレームにすべてのリストをマージ:

MedFrame = do.call("rbind",MedList) 

あなただけに必要コード内の「骨髄腫」を自分のMedlineObjectに変更してください

+0

期待どおりに動作しました。ありがとう! – panchtox

0

tidyrtibbleのパッケージを確認してください。 nest()unnest()の機能を確認してください。再現可能な例がなければ、私はあなたにもっとアドバイスを与えることはできません。

x = 1:5 
data <- lapply(x, function(i){ 
    data.frame(y = 1:5 * i) 
}) 

temp = tibble::tibble(x, data) 
temp 
tidyr::unnest(temp) 
+0

私はコメントをすることができません – struggles

関連する問題