2016-10-18 2 views
0

I ont une trame de données de différentes combinaisons qui représentent si un marqueur est présent 1 ou non 0Utilisez les noms de colonnes de trames de données et des valeurs aux lignes de nom

combinations_df <- expand.grid(
marker_a = c(0, 1), 
marker_b = c(0, 1), 
marker_c = c(0, 1), 
marker_d = c(0, 1) 
) 

    marker_a marker_b marker_c marker_d 
1   0  0  0  0 
2   1  0  0  0 
3   0  1  0  0 
4   1  1  0  0 
5   0  0  1  0 
6   1  0  1  0 
7   0  1  1  0 
8   1  1  1  0 
9   0  0  0  1 
10  1  0  0  1 
11  0  1  0  1 
12  1  1  0  1 
13  0  0  1  1 
14  1  0  1  1 
15  0  1  1  1 
16  1  1  1  1 

Je suis en train de créer un vecteur d'attribuer la ligne noms utilisant chaque colonne, avec sa valeur.

Exemple de sortie:

            marker_a marker_b marker_c marker_d 
marker_a_0-marker_b_0-marker_c_0-marker_d_0   0  0  0  0 
marker_a_1-marker_b_0-marker_c_0-marker_d_0   1  0  0  0 
... 
+0

Vous cherchez 'appliquer (combinations_df, 1, fonction (x) paste0 (noms (x), "_" , x, collapse = "-")) '? –

Répondre

1

Cela devrait le faire:

apply(combinations_df, 
     MARGIN = 1, 
     FUN = function(x) { 
          paste0(c(rbind(colnames(combinations_df), x)), 
            collapse = "-") 
         } 
    ) 
+0

Je suis encore relativement nouveau à R. Cela signifie-t-il que apply() prend les trames de données sous forme de listes? – jesusgarciab

+0

Vous pouvez lire à propos de la fonction 'apply' en tapant'? Apply' dans la console R. Il fonctionne dans les tableaux et les matrices, y compris les trames de données. Je ne suis pas sûr de ce que vous entendez par "les prend comme des listes" - si vous êtes nouveau à R il sera très utile de lire sur les structures de données dans R. – Zach