簡體   English   中英

如何從data.frame創建二進制矩陣?

[英]How to create a binary matrix from a data.frame?

我有一個16列的data.frame。 這是一個示例行。

    > data[16,]
                      V1              V2              V3                 V4
    16 comp27182_c0_seq4 ENSP00000442096 ENSG00000011143 ENSFCAP00000011376
                       V5                V6                V7                V8
    16 ENSFCAG00000012261 comp48601_c0_seq1 comp19130_c0_seq3 comp22796_c2_seq3
                       V9 V10                V11                V12
    16 comp146901_c0_seq1     comp157916_c0_seq1 comp158124_c0_seq1
                      V13               V14 V15 V16
    16 comp229797_c0_seq1 comp61875_c0_seq2

我只對第1和第6列感興趣。 第一列包含我想在矩陣中用作列名的名稱,6到16可以包含字符串或''(無)。 我想將此data.frame轉換為顯示1或0的矩陣,反映第6-16列中的內容。

                  V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11
comp27182_c0_seq4 1  1  1  1  0  1  1  1  1   0   0

我試圖使用面膜但沒有成功。 我相信那里有一個非常簡單的選擇。

謝謝你的幫助。

嘗試這個:

do.call(cbind, lapply(c(1,6:16), 
        function(x) as.numeric(nchar(as.character(data[,x])) > 0)))

我稍微修改了你的代碼以滿足我的確切需求。 現在第一列是命名行。

a<-do.call(cbind, lapply(c(6:16), 
        function(x) as.numeric(nchar(as.character(data[,x])) > 0)))
rownames(a)<-data[,1]

它很棒,謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM