我有一个包含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
我试图使用面膜但没有成功。我相信那里有一个非常简单的选择。
感谢您的帮助。
答案 0 :(得分:3)
试试这个:
do.call(cbind, lapply(c(1,6:16),
function(x) as.numeric(nchar(as.character(data[,x])) > 0)))
答案 1 :(得分:0)
我稍微修改了您的代码以满足我的确切需求。现在第一列是命名行。
a<-do.call(cbind, lapply(c(6:16),
function(x) as.numeric(nchar(as.character(data[,x])) > 0)))
rownames(a)<-data[,1]
效果很好,谢谢!