1

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-16 のみに関心があります。最初の列には、マトリックスの列名として使用したい名前が含まれています。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

私は成功せずにマスクを使用しようとしました。そこには非常に簡単なオプションがあると確信しています。

助けてくれてありがとう。

4

2 に答える 2

4

これを試して:

do.call(cbind, lapply(c(1,6:16), 
        function(x) as.numeric(nchar(as.character(data[,x])) > 0)))
于 2012-10-10T18:52:58.013 に答える
0

正確なニーズに合わせてコードをわずかに変更しました。これで、最初の列は行に名前を付けています。

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

それはうまくいきます、ありがとう!

于 2012-10-10T19:02:55.940 に答える