WebHU - Programozási kérdések és válaszok

Listaelemek hozzáfűzése az adatkeret oszlopához

Ez az adatkeretem van:

       GO.ID Annotated Significant Expected P-value                   Term Ontology
1 GO:0000049         7           0     0.25  1.0000           tRNA binding       MF
2 GO:0000062         4           0     0.14  1.0000 fatty-acyl-CoA binding       MF

És van ez a lista:

$`GO:0000049`
[1] "Solyc02g090860.2" "Solyc03g119280.2" "Solyc05g056260.2" "Solyc06g048610.2" "Solyc07g008950.2" "Solyc08g015960.2"
[7] "Solyc10g007060.2"

$`GO:0000062`
[1] "Solyc01g099350.2" "Solyc03g082910.2" "Solyc04g078090.2" "Solyc08g075690.2"

Van valami mód a lista elemeinek kinyomtatására az adatkeret új oszlopába? A sorrend mindkét struktúrában azonos, vagyis a GO.ID oszlop a listaelemek sorrendje. Valami olyasmit keresek, mint a paste bash parancs.

Megpróbáltam a lapply és a listát fájlba exportálni. Ezután write.table a dataframe-mel, majd paste paranccsal a bash-ban. De kíváncsi vagyok, hogy van-e mód ilyen munkára R-ben.

És igen, kezdő vagyok az R világban.

SZERKESZTÉS:

Ez az általam kívánt kimenet:

       GO.ID Annotated Significant Expected P-value                   Term Ontology           Gene_ID
1 GO:0000049         7           0     0.25  1.0000           tRNA binding       MF           Solyc02g090860.2,Solyc03g119280.2,Solyc05g056260.2,Solyc06g048610.2,Solyc07g008950.2,Solyc08g015960.2,Solyc10g007060.2
2 GO:0000062         4           0     0.14  1.0000 fatty-acyl-CoA binding       MF           Solyc01g099350.2,Solyc03g082910.2,Solyc04g078090.2,Solyc08g075690.2 
r
30.04.2015

  • Mit értesz az alatt, hogy új oszlopba nyomtat? Átalakítani szeretné a listát (Solyc...) karakterláncsá, és új oszlopként hozzáadni, vagy azt szeretné, hogy hét sor legyen GO.ID = GO:0000049-vel és négy sor GO.ID = GO:0000062-vel a listák megfelelő értékeivel? 30.04.2015
  • Elnézést, nem jól adtam meg. Kérem nézze meg a szerkesztést. Remélem egy kicsit tisztáz. PD: A lista szóközzel választható el, nem feltétlenül vesszővel. 30.04.2015

Válaszok:


1

Ha df a data.frame és lst a listája, a következőket teheti:

transform(df, Gene_ID=sapply(lst, paste0, collapse=',')[GO.ID])
30.04.2015
  • Ez a megoldás egyszerű, könnyen érthető és tökéletesen működik. Köszönöm. 30.04.2015
  • Elnézést, de van-e mód arra, hogy a listát ugyanúgy dataframe-re alakítsuk át, mint ahogyan tetted, de az adatkerettel való összehasonlítás nélkül? Csak hozzon létre egy adatkeretet a listából. 04.05.2015
  • valami ilyesmi: df1 = data.frame(col=sapply(lst, paste0, collapse=','),GO.ID=names(lst)) 04.05.2015

  • 2

    (Elnézést kérek a dplyr használatáért. Mindez megtehető a beépített R függvényekkel, de nem emlékszem, mikor használtam utoljára)

    library(dplyr)
    library(tidyr)
    
    # sample data
    l <- list("GO.0000049" = c(1,2,3), "GO:0000062" = c(4,5,6))
    df <- data.frame(GO.ID = c("GO.0000049", "GO:0000062"), Annotated = c(7,4), stringsAsFactors = F)
    
    # actual magic
    result <- gather(as_data_frame(lapply(l, function(x) paste(x, collapse=","))), "GO.ID", "Gene_ID") %>% inner_join(df)
    

    És a result a következő lenne:

    Source: local data frame [2 x 3]
    
           GO.ID Gene_ID Annotated
    1 GO.0000049   1,2,3         7
    2 GO:0000062   4,5,6         4
    
    30.04.2015
  • Köszönöm Anton. A kód futtatásakor a következő hibaüzenetet kapom: Hiba: nem található %›% függvény. Bármilyen ötlete? 30.04.2015
  • be kell töltened a pipe karaktert tartalmazó library(dplyr)-t (eredetileg magrittr csomagban) 30.04.2015
  • Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..