2016-10-18 4 views
0

У меня есть кадр данных различных комбинаций, которые представляют ли присутствуют 1 или нет 0Использование фрейм данных имен столбцов и значение в строки имени

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 

Я пытаюсь создать вектор для назначения строки маркеров имена, использующие каждый столбец, вместе с его значением.

Пример вывода:

            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

Вы ищете 'применить (combinations_df, 1, функция (х) paste0 (имена (х), "_" , x, collapse = "-")) '? –

ответ

1

Это следует сделать это:

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

Я по-прежнему относительно новичок в R. Означает ли это, что apply() принимает кадры данных в виде списков? – jesusgarciab

+0

Вы можете прочитать о функции 'apply', введя'? Apply' в консоли R. Он работает в массивах и матрицах, включая кадры данных. Я не уверен, что вы подразумеваете под «принимает их как списки» - если вы новичок в R, это будет очень полезно прочитать в структурах данных в R. – Zach

Смежные вопросы