究竟是什么峰值?
让我们来看看这样的载体:
0, 1, 1, 2, 3, 2, 1, 0
所以在这里我发现了一个峰值,它在位置5上有一个最大值,这就是我要找的东西。当然,这只是一个例子,对我的数据而言并不那么明显。让我们使用表格的另一个例子:
Gene 2_1 2_2 2_3 2_4 2_5 2_6 2_7 2_8
a2p1u8 Na 3 5 1 2 Na 1 4
a2qab2 2 5 3 Na Na Na Na 3
a6zl23 4 Na 1 Na 1 1 2 Na
a6zlf3 Na Na 3 1 Na 2 Na Na
这就是我想要的输出:
New matrix:
Gene 2_1 2_2 2_3 2_4 2_5 2_6 2_7 2_8
a2p1u8 0 0 1 0 1 0 0 1
a2qab2 0 1 0 0 0 0 0 1
a6zl23 1 0 1 0 0 0 1 0
a6zlf3 0 0 1 0 0 1 0 0
它以某种方式与找到局部最大值连接,但它并不完全是我想要实现的。现在让我告诉你我的数据:
> dput(head(tbl_all2))
structure(list(`Gene name` = structure(1:6, .Label = c("a2p1u8",
"a2qab2", "a6zl23", "a6zlf3", "a6zq61", "a6ztx1", "a6zw47", "a6zya9",
"a7a095", "a7a0l4", "b2g4d8", "b2g4i6", "b2g4p9", "b2g4u5", "b2zbw7",
"b3lgx6", "b3lh69", "b3lha4", "b3ljq6", "b3llk0", "b3lp17", "b3ltm6",
"b5vdr5", "b5ve00", "b5ve47", "b5ve66", "b5ve75", "b5vea8", "b5ved3",
"b5vej5", "b5vfh0", "b5vfm0", "b5vfq6", "b5vg00", "b5vgm8", "b5vgw4",
"b5vh77", "b5vi95", "b5vif4", "b5vik7", "b5vik8", "b5viu6", "b5vj32",
"b5vjc2", "b5vji2", "b5vk65", "b5vkc9", "b5vkd1", "b5vkr2", "b5vkr3",
"b5vl55", "b5vl71", "b5vla9", "b5vlc1", "b5vln1", "b5vlr4", "b5vm13",
"b5vm96", "b5vmw7", "b5vn73", "b5vnb6", "b5vnc3", "b5vnj1", "b5vnk1",
"b5vp33", "b5vp56", "b5vpx6", "b5vq26", "b5vq44", "b5vq52", "b5vqk3",
"b5vrj3", "b5vrz5", "b5vs89", "b5vsy8", "c7gni0", "c7gq32", "c7gqn5",
"c7gtn6", "c7gu46", "c7gwe7", "c7gxt0", "c8z669", "c8z6f5", "c8z6r4",
"c8z6v4", "c8zbm1", "c8zcu8", "c8zd16", "c8zhg0", "e7k9a7", "e7k9i7",
"e7ka19", "e7ka28", "e7kag3", "e7kak7", "e7kau5", "e7kb37", "e7kbg6",
"e7kbp6", "e7kde5", "e7kdf5", "e7kdl8", "e7kec6", "e7kek6", "e7ker2",
"e7kez8", "e7kfj1", "e7kg86", "e7kgg6", "e7kgj9", "e7kgm9", "e7kh79",
"e7khz2", "e7kid1", "e7kid2", "e7kij3", "e7kip9", "e7kiv1", "e7kj59",
"e7kjc9", "e7kjz8", "e7kkg8", "e7kks4", "e7kkx7", "e7klq2", "e7km62",
"e7kmw1", "e7kni6", "e7knq6", "e7knx6", "e7kp09", "e7kps9", "e7kql6",
"e7kqt5", "e7kr71", "e7krc8", "e7krj9", "e7krs0", "e7ks72", "e7ksf4",
"e7ksg0", "e7ksv0", "e7ku26", "e7kui4", "e7kuz1", "e7kv21", "e7kvp5",
"e7lr73", "e7lrn1", "e7ls46", "e7ls63", "e7lsa7", "e7lsk8", "e7lsm3",
"e7lsy6", "e7lte7", "e7ltk1", "e7ltv7", "e7lu34", "e7lun6", "e7lup5",
"e7lux5", "e7lv27", "e7lw21", "e7lw44", "e7lwa5", "e7lwl6", "e7lwm3",
"e7lx88", "e7lxj7", "e7lxn8", "e7lxp5", "e7ly02", "e7lyz3", "e7lz85",
"e7lzh7", "e7lzn6", "e7m129", "e7ney3", "e7nf47", "e7nfe5", "e7nfq5",
"e7nfz0", "e7ng34", "e7nh47", "e7nh77", "e7nhb2", "e7nhq7", "e7nie7",
"e7nii6", "e7nir5", "e7nje2", "e7njk4", "e7njv1", "e7nk19", "e7nk28",
"e7nkm6", "e7nl37", "e7nl74", "e7nlc7", "e7nlm1", "e7nlr2", "e7nlt8",
"e7nm31", "e7nm99", "e7nmz4", "e7nn89", "e7npc6", "e7q121", "e7q1a1",
"e7q1e1", "e7q1k7", "e7q1t1", "e7q1x8", "e7q2c3", "e7q2x6", "e7q3f3",
"e7q3m4", "e7q3x2", "e7q4c4", "e7q4i8", "e7q5g3", "e7q5l9", "e7q5p8",
"e7q6a9", "e7q6d5", "e7q800", "e7q814", "e7q825", "e7q833", "e7q8i6",
"e7q8q5", "e7q8r1", "e7q8u9", "e7q8y1", "e7qbg0", "e7qcc5", "e7qcf3",
"e7qd66", "e7qdy4", "e7qdy8", "e7qe39", "e7qf79", "e7qfn0", "e7qgb5",
"e7qh38", "e7qh57", "e7qh90", "e7qhj0", "e7qhj7", "e7qhk8", "e7qi53",
"e7qi89", "e7qii2", "e7qiq0", "e7qiv9", "e7qje4", "e7qjm1", "e7qjn3",
"e7qjz3", "e7qka0", "e7qkh1", "e7qki3", "e7ql07", "e7ql23", "e7ql56",
"e7qle4", "e7qlh7", "e7qlm1", "e7qlq3", "e9p8k6", "e9p9c8", "e9p9h6",
"e9p9y2", "f8ka88", "g1uaw4", "g2w8j6", "g2wax6", "g2wbs0", "g2wbt1",
"g2wc37", "g2we94", "g2weh9", "g2wej8", "g2wf31", "g2wgt2", "g2whe0",
"g2wi84", "g2wlm2", "g2wmh7", "g2wmk0", "g2wnc9", "h0gc43", "h0gc45",
"h0gc46", "h0gc71", "h0gcc4", "h0gce3", "h0gce7", "h0gcg9", "h0gcx2",
"h0gd06", "h0gd44", "h0gd98", "h0gda5", "h0gda8", "h0gdj5", "h0gdq8",
"h0gdr5", "h0gdt8", "h0ger5", "h0geu6", "h0gf09", "h0gf24", "h0gf63",
"h0gfb9", "h0gfx9", "h0gg75", "h0ggk6", "h0ggy4", "h0gh33", "h0gh37",
"h0ghf6", "h0ghg0", "h0ghh6", "h0ghk6", "h0gig2", "h0gim1", "h0giq8",
"h0gir4", "h0gj73", "h0gk02", "h0gk39", "h0gk56", "h0gkc0", "h0gkh0",
"h0gl26", "h0gl41", "h0gle1", "h0glz7", "h0gm98", "h0gmi5", "h0gmp1",
"h0gmp4", "h0gms2", "h0gmz5", "h0gn89", "h0gp57", "h0gp81", "h0gp99",
"h0gpm9", "h0gq90", "h0gqv1", "h0gqv6", "h0gr16", "h0gr46", "h0gr62",
"h0grh5", "h0grj7", "h0grp5", "h0gru2", "h0gry2", "h0grz3", "h0gs82",
"h0gs88", "h0gsa9", "h0gsk0", "h0gsl8", "h0gsu6", "h0gtf9", "h0gti8",
"h0gtn2", "h0gts6", "h0gu87", "h0gug5", "h0guj4", "h0gur2", "h0gut3",
"h0guu5", "h0gux5", "h0gv21", "h0gv78", "h0gvm9", "h0gvn0", "h0gw05",
"h0gw07", "h0gwi0", "h0gwr8", "h0gx56", "h0gx58", "h0gx70", "h0gx75",
"h0gxf9", "h0gxg6", "h0gxy4", "h0gxz9", "h0gy93", "h0gys0", "h0gyu8",
"h0gyz2", "h0gz20", "h0gzc0", "h0gzd5", "h0gzx8", "h0h061", "h0h0j5",
"h0h0s1", "h0h0t9", "h0h1f1", "h0h1m4", "h0h1r9", "h0h1t7", "h0h216",
"h0h220", "h0h251", "h0h294", "h0h2j1", "i7ji35", "i7ktc2", "n1nwq1",
"n1nxi5", "n1ny73", "n1nyf2", "n1nyt5", "n1nyw8", "n1nz14", "n1nzs8",
"n1p080", "n1p0a4", "n1p0i3", "n1p0w1", "n1p1a9", "n1p1r0", "n1p242",
"n1p2s1", "n1p2s2", "n1p3w6", "n1p4p6", "n1p4q6", "n1p4r9", "n1p548",
"n1p5a6", "n1p5i1", "n1p605", "n1p7b3", "n1p858", "n1p8d9", "n1p8f8",
"n1p8l5", "n1p910", "n1pa29", "n1pa30", "o13429", "o13516", "o14455",
"o14467", "o43137", "p00358", "p00359", "p00360", "p00431", "p00445",
"p00498", "p00549", "p00560", "p00635", "p00729", "p00812", "p00815",
"p00817", "p00830", "p00890", "p00899", "p00924", "p00925", "p00931",
"p00942", "p00950", "p00958", "p01120", "p01123", "p02309", "p02400",
"p02406", "p02557", "p02829", "p02992", "p02994", "p03962", "p03965",
"p04037", "p04046", "p04050", "p04076", "p04147", "p04161", "p04456",
"p04801", "p04802", "p04806", "p04807", "p05150", "p05317", "p05318",
"p05319", "p05373", "p05694", "p05737", "p05738", "p05739", "p05740",
"p05743", "p05744", "p05745", "p05747", "p05749", "p05750", "p05755",
"p05756", "p05759", "p06101", "p06106", "p06168", "p06169", "p06174",
"p06208", "p06244", "p06367", "p06634", "p06738", "p07149", "p07170",
"p07172", "p07244", "p07245", "p07246", "p07256", "p07257", "p07258",
"p07259", "p07260", "p07262", "p07263.2", "p07264", "p07274",
"p07275", "p07277", "p07281", "p07283", "p07284", "p07285", "p07560",
"p07702", "p07703", "p07806.2", "p07884.2", "p07991", "p08465",
"p08518", "p08524", "p08536", "p08566", "p09064", "p09436", "p09624",
"p09733", "p09734", "p09880", "p09938", "p0c2h7", "p0c2h8", "p0cs90",
"p0ct05", "p0cx11", "p0cx24", "p0cx26", "p0cx30", "p0cx32", "p0cx34",
"p0cx36", "p0cx38", "p0cx40", "p0cx42", "p0cx44", "p0cx48", "p0cx50",
"p0cx52", "p0cx54", "p0cx56", "p0cx83", "p0cx85", "p10081", "p10127",
"p10356", "p10591", "p10592", "p10594.2", "p10659", "p10664",
"p10869", "p10964", "p11076", "p11154", "p11353", "p11412", "p11484",
"p11745", "p12612", "p12630", "p12709", "p12904", "p12945", "p13188",
"p13298", "p13663", "p14065", "p14120", "p14126", "p14127", "p14306",
"p14540", "p14743", "p14832", "p14843", "p14904", "p15019", "p15108",
"p15180", "p15202", "p15303", "p15424", "p15454", "p15496", "p15624",
"p15625", "p15646", "p15703", "p15705", "p15790", "p15873", "p15992",
"p16120", "p16140", "p16370", "p16387", "p16467", "p16474", "p16550",
"p16603", "p16649", "p16861", "p17076", "p17255", "p17423", "p17505",
"p17555", "p17649", "p17709", "p17967", "p18544", "p18562", "p18962",
"p19097", "p19262", "p19414", "p19454", "p19812", "p19881", "p19882",
"p20081", "p20133", "p20433", "p20434", "p20436", "p20459", "p20967",
"p21242", "p21243", "p21524", "p21801", "p21826", "p22023", "p22108",
"p22138", "p22141", "p22146", "p22202", "p22203", "p22217", "p22336",
"p22515", "p22696", "p22803", "p23180", "p23248", "p23254", "p23301",
"p23638", "p23639", "p23724", "p23776", "p24000", "p24280", "p24521",
"p24783", "p24859", "p25036", "p25043", "p25293", "p25328", "p25332",
"p25359", "p25373", "p25375", "p25443", "p25451", "p25491", "p25567",
"p25572", "p25631", "p25632", "p25638", "p25654", "p25694", "p25719",
"p26321", "p26637", "p26755", "p26783", "p26784", "p26785", "p26786",
"p27466", "p27472", "p27476", "p27614", "p27616", "p27929", "p28000",
"p28241", "p28272", "p28273", "p28274", "p28319", "p28495", "p28707",
"p28777", "p28834", "p29311", "p29453", "p29509", "p29547", "p29952",
"p30402", "p30656", "p30657", "p30952", "p31115", "p31116", "p31209",
"p31373", "p31383", "p31412", "p31539", "p31688", "p32178", "p32179",
"p32288", "p32324", "p32327", "p32337", "p32347", "p32356", "p32377",
"p32379", "p32381", "p32445", "p32452", "p32459", "p32460", "p32461",
"p32469", "p32471", "p32474", "p32481", "p32485", "p32486", "p32495",
"p32497", "p32527", "p32529", "p32558", "p32565", "p32582", "p32589",
"p32590", "p32598", "p32604", "p32614", "p32626", "p32628", "p32643",
"p32656", "p32767", "p32771", "p32774", "p32775", "p32835", "p32836",
"p32860", "p32895", "p32905", "p32939", "p33201", "p33204", "p33298",
"p33307", "p33312", "p33315", "p33317", "p33327", "p33330", "p33399",
"p33401", "p33412", "p33416", "p33442", "p33734", "p34162", "p34167",
"p34223", "p34227", "p34760", "p35176", "p35184", "p35189", "p35195",
"p35691", "p35719", "p35844", "p36008", "p36010", "p36015", "p36017",
"p36018", "p36037", "p36047", "p36060", "p36069", "p36104", "p36136",
"p36156", "p36159", "p36421", "p37012", "p37254", "p37291", "p37292",
"p37302", "p37303", "p37898", "p38009", "p38011", "p38013", "p38061",
"p38066", "p38067", "p38071", "p38075", "p38081", "p38088.2",
"p38109", "p38113", "p38115", "p38145", "p38197", "p38199", "p38203",
"p38205", "p38237", "p38254", "p38260", "p38328", "p38331", "p38431",
"p38439", "p38523", "p38555", "p38616", "p38620", "p38623", "p38625",
"p38627", "p38628", "p38687", "p38688", "p38693", "p38697", "p38698",
"p38701", "p38707", "p38710", "p38711", "p38715", "p38716", "p38754",
"p38764", "p38765", "p38774", "p38777", "p38787", "p38788", "p38791",
"p38792", "p38797", "p38804", "p38820", "p38840", "p38841", "p38858",
"p38861", "p38879", "p38882", "p38888", "p38891", "p38902", "p38930",
"p38972", "p38986", "p38999", "p39076", "p39079", "p39522", "p39676",
"p39683", "p39692", "p39708", "p39714", "p39721", "p39929", "p39939",
"p39954", "p39958", "p39976", "p39979", "p39988", "p39990", "p40011",
"p40016", "p40029", "p40032", "p40037", "p40043", "p40047", "p40054",
"p40069", "p40070", "p40075", "p40087", "p40089", "p40106", "p40185",
"p40302", "p40354", "p40363", "p40414", "p40422", "p40454", "p40459",
"p40495", "p40498", "p40506", "p40509", "p40510", "p40531", "p40545",
"p40553", "p40581", "p40586", "p40825.2", "p41057", "p41058",
"p41277", "p41338", "p41752", "p41805", "p41811", "p41816", "p41835",
"p41895", "p41896", "p41920", "p41921", "p41939", "p41940", "p42935",
"p42936", "p42941", "p42943", "p43561", "p43567", "p43583", "p43590",
"p43593", "p43616", "p43621", "p46151", "p46654", "p46655", "p46669",
"p46672", "p46680", "p46948", "p46959", "p46969", "p46990", "p47008",
"p47079", "p47089", "p47095", "p47096", "p47103", "p47117", "p47119",
"p47120", "p47164", "p47173", "p47176", "p47771", "p48164", "p48362",
"p48363", "p48445", "p48526", "p48567", "p48589", "p49017", "p49089",
"p49090", "p49166", "p49167", "p49367", "p49435", "p49723", "p49775",
"p49954", "p49957", "p50086", "p50094", "p50095", "p50101", "p50264",
"p50861", "p50946", "p51401", "p51601", "p51996", "p52488", "p52489",
"p52910", "p52918", "p53072", "p53090", "p53095", "p53110", "p53111",
"p53128", "p53144", "p53164", "p53177", "p53183", "p53184", "p53196",
"p53221", "p53228", "p53235", "p53255", "p53256", "p53265", "p53270",
"p53303", "p53315", "p53319", "p53334", "p53342", "p53598", "p53615",
"p53633", "p53720", "p53727", "p53731", "p53759", "p53834", "p53839",
"p53848", "p53909", "p53912", "p53920", "p53980", "p53981", "p54113",
"p54114", "p54115", "p54838", "p54839", "p54885", "p60010", "p80210",
"p83774", "p87262", "p89886", "q00055", "q00618", "q00711", "q00764",
"q00955", "q01855", "q02326", "q02455", "q02642", "q02648", "q02725",
"q02821", "q02892", "q02933", "q03034", "q03048", "q03102", "q03161",
"q03262", "q03280", "q03532", "q03558", "q03629", "q03677", "q03690",
"q03771", "q03774", "q03940", "q04066", "q04119", "q04120", "q04175",
"q04178", "q04212", "q04225", "q04336", "q04401", "q04409", "q04430",
"q04432", "q04491", "q04533", "q04636", "q04660", "q04728", "q04792",
"q04894", "q04947", "q04951", "q05016", "q05022", "q05506", "q05515",
"q05533", "q05583", "q05636", "q05778", "q05788", "q05905", "q05911",
"q05933", "q05946", "q05979", "q06053", "q06103", "q06137", "q06146",
"q06151", "q06252", "q06338", "q06385", "q06406", "q06408", "q06440",
"q06494", "q06523", "q06608", "q06624", "q06625", "q06672", "q06706",
"q07381", "q07505", "q07527", "q07532", "q07551", "q07589", "q07648",
"q07938", "q08162", "q08220", "q08245", "q08421", "q08634", "q08647",
"q08686", "q08745", "q08920", "q08924", "q08952", "q08971", "q08977",
"q08985", "q12008", "q12009", "q12040", "q12074", "q12091", "q12109",
"q12118", "q12122", "q12123", "q12159", "q12168", "q12189", "q12211",
"q12242", "q12277", "q12283", "q12306", "q12314", "q12329", "q12335",
"q12341", "q12363", "q12377", "q12400", "q12408", "q12414", "q12434",
"q12447", "q12449", "q12455", "q12458", "q12460", "q12464", "q12496",
"q12522", "q12525", "q12680", "q3e754", "q3e792", "q3e7x9", "q3e7y3",
"q6fjy0_cangasimilartouniprot", "q6fl72_cangasimilartouniprot",
"q6fmr2_cangasimilartouniprot", "q6fns7_cangasimilartouniprot",
"q6fph8_cangasimilartouniprot", "q6fpi1_cangasimilartouniprot",
"q6fpn8_cangasimilartouniprot", "q6fpp1_cangasimilartouniprot",
"q6fr31_cangasimilartouniprot", "q6frs2_cangasimilartouniprot",
"q6fst2_cangasimilartouniprot", "q6ftb3_cangasimilartouniprot",
"q6ftj1_cangasimilartouniprot", "q6ftk5_cangasimilartouniprot",
"q6fvr0_cangasimilartouniprot", "q6fwr8_cangasimilartouniprot",
"q6fx34_cangasimilartouniprot", "q6fxu9_cangasimilartouniprot",
"q6q560", "q74z16", "q74z48", "q74zf6", "q74zm9", "q750e3", "q750u5",
"q750z7", "q751d8", "q752q7", "q752w6", "q753p8", "q753t3", "q753w1",
"q753y2", "q754c8", "q754d6", "q754f6", "q755g1", "q755g8", "q755q5",
"q756e2", "q756e7", "q756f7", "q756k2", "q756u4", "q756y3", "q757i1",
"q757l4", "q757n1", "q757y2", "q758l1", "q758t1", "q759a3", "q759a4",
"q759a9", "q759i7", "q759v7", "q75aa5", "q75bc3", "q75bq6", "q75bv8",
"q75c57", "q75cf8", "q75cn6", "q75df8", "q75dp6", "q75dq0", "q75ds7",
"q75du3", "q75dw1", "q75en0", "q75ew2", "q75f01", "q87026", "q8j1f8",
"q8j2m3", "q8mx29", "q96vh4", "q99210", "q99258", "q99312", "q9p4c2",
"s4vpl7", "s5s176", "t2a536", "v5rd14"), class = "factor"), `2_1` = c(NA,
NA, NA, NA, 0.933959669839227, NA), `2_2` = c(NA, NA, NA, NA,
14.2445924025971, NA), `2_3` = c(NA, NA, NA, NA, 1.84391659829476,
NA), `2_4` = c(NA, NA, NA, NA, 1, NA), `2_5` = c(NA, NA, NA,
NA, 0.850344700878792, NA), `2_6` = c(0.0631240804031774, NA,
NA, 1.11684072808048, 1, 1.29478435854497), `2_7` = c(0.135377134405041,
NA, NA, 0.941579635959761, 0.389199799282971, 0.705215641455033
), `2_8` = c(0.340634833543641, NA, NA, 1, 0.467857655108082,
NA), `2_9` = c(1.43325438281299, NA, NA, NA, 0.157821181013907,
NA), `2_10` = c(1.71425095521776, NA, NA, NA, 0.382740802185421,
NA), `2_11` = c(0.715532320539672, NA, NA, NA, NA, NA), `2_12` = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), `2_13` = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), `2_14` = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), `2_15` = c(1.72759758284943,
NA, NA, NA, NA, NA), `2_16` = c(1.71289858010354, NA, NA, NA,
NA, NA), `2_17` = c(0.747888289194788, 1, NA, NA, NA, NA), `2_18` = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), `2_19` = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), `2_20` = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), `2_21` = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), `2_22` = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), `2_23` = c(NA,
NA, 1.29452015085474, NA, NA, NA), `2_24` = c(NA, NA, 0.852739924572629,
NA, NA, NA)), .Names = c("Gene name", "2_1", "2_2", "2_3", "2_4",
"2_5", "2_6", "2_7", "2_8", "2_9", "2_10", "2_11", "2_12", "2_13",
"2_14", "2_15", "2_16", "2_17", "2_18", "2_19", "2_20", "2_21",
"2_22", "2_23", "2_24"), row.names = c(NA, 6L), class = "data.frame")
所以我应该首先将所有NAs替换为0.
## Replacing Na by 0 ##
tbl_all2[is.na(tbl_all2)] <- 0
我尝试了这样的功能让它起作用:
minus2 <- t(apply(tbl_all2, 1, function(x) as.numeric(diff(sign(diff(x)))==-2)))
但结果并不完美。使用此功能后,缺少第一列和最后一列。
我在一个关于“寻找峰值”的帖子中找到了函数,但它也不完美:
which(diff(sign(diff(Gene name)))==-2)+1
你知道如何解决我的问题吗?
答案 0 :(得分:2)
您错过了边缘情况,您可以单独评估。
E.g。对于一个矢量,你可以做类似的事情:
tt <- c(5,2,3,2,1, 1, 2, 3)
c(ifelse(diff(head(tt, 2)) < 0, 1, NULL), #this handles start edge case
which(diff(sign(diff(tt))) == -2) + 1,
ifelse(diff(tail(tt, 2)) > 0, length(tt), NULL)) #this handles end edge case
## [1] 1 3 8
<强> UDPATE:强>
以下是您如何应用于您的情况。你现在有了现成的答案。
localmaxima <- function(tt) {
x <- c(ifelse(diff(head(tt, 2)) < 0, 1, NA), which(diff(sign(diff(tt))) == -2) + 1, ifelse(diff(tail(tt, 2)) > 0, length(tt),
NA))
as.vector(x[!is.na(x)])
}
IND <- apply(as.matrix(tbl_all2[, -1]), 1, FUN = localmaxima)
## Now we have a list - one element for each row - containing indices
## of local maximas including edges if any.
IND
## $`1`
## [1] 10 15
##
## $`2`
## [1] 17
##
## $`3`
## [1] 23
##
## $`4`
## [1] 6 8
##
## $`5`
## [1] 2 6 8 10
##
## $`6`
## [1] 6
##
## We need to convert them to coordinates of matrix so that we can use matrix[coordinates.matrix] subsetting property of a matrix
COORDS <- do.call(rbind, lapply(seq_along(IND), FUN = function(i) (expand.grid(i, IND[[i]]))))
COORDS
## Var1 Var2
## 1 1 10
## 2 1 15
## 3 2 17
## 4 3 23
## 5 4 6
## 6 4 8
## 7 5 2
## 8 5 6
## 9 5 8
## 10 5 10
## 11 6 6
## Create temp matrix of dimensions same as result containing all zeros
TEMP <- matrix(0, nrow = nrow(tbl_all2), ncol = ncol(tbl_all2) - 1)
## Set the 1 at locations of local maximas
TEMP[as.matrix(COORDS)] <- 1
## create result by cbinding back the gene name and adding names to columns.
DESIRED.RESULT <- cbind(tbl_all2[, 1], as.data.frame(TEMP))
names(DESIRED.RESULT) <- names(tbl_all2)
DESIRED.RESULT
## Gene name 2_1 2_2 2_3 2_4 2_5 2_6 2_7 2_8 2_9 2_10 2_11 2_12 2_13 2_14 2_15 2_16 2_17 2_18 2_19 2_20 2_21 2_22 2_23 2_24
## 1 a2p1u8 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0
## 2 a2qab2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
## 3 a6zl23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
## 4 a6zlf3 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## 5 a6zq61 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## 6 a6ztx1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0