2016-03-31 18 views
0

私はかなり長い間探してきましたが、この問題を解決するようには思えません。R 1つのデータフレームの文字リスト

私は54種類の要素があり、正確な経路の名前が異なる文字列を含んでいます。例えば、ここでは要素を持つ2つの要因があり、それらは含まれています。私がやりたい何

> PWe1 
[1] Gene_Expression           
[2] miR-targeted_genes_in_muscle_cell_-_TarBase    
[3] Generic_Transcription_Pathway 

> PWe2 
    [1] miR-targeted_genes_in_epithelium_-_TarBase       
    [2] miR-targeted_genes_in_leukocytes_-_TarBase       
    [3] miR-targeted_genes_in_lymphocytes_-_TarBase       
    [4] miR-targeted_genes_in_muscle_cell_-_TarBase 

はこれらを取り、各列が1の名前を持っている54列、と一つの大きなデータフレームにそれらを組み合わせることです対応する因子。私はcbind、cbind.data.frameと他のいくつかのオプションを試しましたが、それらは文字列の代わりに数値を返します。


予想される出力:

PWe1 PWe2 
Gene_Expression miR-targeted_genes_in_epithelium_-_TarBase 
miR-targeted_genes_in_muscle_cell_-_TarBase miR-targeted_genes_in_leukocytes_-_TarBase 
Generic_Transcription_Pathway miR-targeted_genes_in_lymphocytes_-_TarBase 
NA miR-targeted_genes_in_muscle_cell_-_TarBase 

それはRに来るとき、私はかなり初心者だけど、誰も私は可能な解決策に向けて少しずつ動かすことができますか?

ありがとうございます!

+0

各因子は、文字列の同じ数を持っていますか?少なくとも1つ以上の要素を追加して、結果を出力してください。 –

+0

あなたの例では、3つの要素を示していますか? PWe1とは何ですか? – Sotos

+1

Sotos「PWe1」はそれに関連する3つの文字列を持つ要素だと思います。 –

答えて

1
l1 <- max(length(v1), length(v2)) 
length(v1) <- l1 
length(v2) <- l1 
cbind(as.character(v1), as.character(v2)) 
#  [,1]           [,2]           
#[1,] "Gene_Expression"        "miR-#targeted_genes_in_epithelium_-_TarBase" 
#[2,] "miR-targeted_genes_in_muscle_cell_-_TarBase" "miR-#targeted_genes_in_leukocytes_-_TarBase" 
#[3,] "Generic_Transcription_Pathway"    "miR-#targeted_genes_in_lymphocytes_-_TarBase" 
#[4,] NA           "miR-#targeted_genes_in_muscle_cell_-_TarBase" 
+1

ありがとう、これは非常にうまくいった!私は多くのことを学びました! –

1

あなたはCBINDを使用する前に、文字にあなたの要因を変換する場合は、あなたが取得しない数値:両方のベクトルの長さが異なる場合

testFrame <- data.frame(cbind(as.character(PWe1), as.character(PWe3)) 

は、CBINDは意志短いベクトルの警告と要素を投げます複製される。あなたのケースでこれが満足できない場合は、おそらくdata.frameオブジェクトが正しい選択ではないかもしれません。

+1

OPはRの意味の要素を参照していません。そして弦の長さは不揃いで、瓶詰めはリサイクルされます。 –

2
lst <- mget(ls(pattern="PW"))   #<--- Create list with all necessary vectors. 
ind <- lengths(lst)      #<--- find maximum length 
as.data.frame(do.call(cbind, 
    lapply(lst, `length<-`, max(ind)))) #<--- Convert to data.frmae 
#           PWe1          PWe2 
# 1        Gene_Expression miR-targeted_genes_in_epithelium_-_TarBase 
# 2 miR-targeted_genes_in_muscle_cell_-_TarBase miR-targeted_genes_in_leukocytes_-_TarBase 
# 3    Generic_Transcription_Pathway miR-targeted_genes_in_lymphocytes_-_TarBase 
# 4          <NA> miR-targeted_genes_in_muscle_cell_-_TarBase 
+0

同じ考えで同時にコメントしました。 +1 – nicola

+0

私はこれがより好き:) – Sotos

関連する問題