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

Csoportosítsa az eredményeket az adatnevek alá az apply függvény segítségével, és ábrázolja az R-ben

Tegyük fel, hogy van egy adatom, amely 3 külön adatot tartalmaz. Itt vannak az adataim;

data<-structure(list(x = structure(list(value = c(2L, 4L, 5L, 6L, 9L, 
4L, 3L, 2L, 10L, 6L)), .Names = "value", class = "data.frame", row.names = c(NA, 
-10L)), y = structure(list(value = c(2, 2.1, 4, 3, 0, 1.2, 4.2, 
3, 4, 9)), .Names = "value", class = "data.frame", row.names = c(NA, 
-10L)), z = structure(list(value = c(1, 2, 7, 6, 0.3, 5.4, 4, 
3, 6, 7)), .Names = "value", class = "data.frame", row.names = c(NA, 
-10L))), .Names = c("x", "y", "z"))

És itt van a mintafüggvényem;

sam<-function(x) {
  ex<-c(3,2,4,5,2)
  z<-data.frame(x)
  y<-as.matrix(sapply(z, as.numeric)) 
  h<-lapply(c(2,5,10),  function(xx) tapply(y, as.integer(gl(nrow(x), xx, nrow(x)) ), FUN = sum))
  names(h)<-c("min2", "min5", "min10")
  min2<-h[[1]]
  pdf("plots.pdf")
  plot(min2, ex, main="min. compare",
       xlab="Historical Values ", ylab="Disaggregated Values", pch=19, col = "blue")

  dev.off()
  return(h)
}

A függvényben a képen látható módon összesítem az értékeket. Aztán min2 ábrázolása ex adatokkal.

Az alábbi kóddal megpróbáltam használni a funkciót minden adathoz, mint pl.

v1<-sapply(data, sam)

De nem látom a számítás nevét, mint min2 min5 min10 az eredménylistában. És az eredmények is komplexen érkeznek, nem a x, y és z alatt

erre a kettőre vágyom;

1) Az eredmények csoportosítása az egyes adatnevek alatt. Mint;

[x]              [y]            [z]
min2            min2           min2 
min5            min5           min5
min10           min10          min10

2) Ábrázolja a kívántakat az összes x, y és z számára a fent említett módon. És exportáljon három telket egy pdf-be vagy külön.

r
26.11.2019

  • Nem értem jól, mi a várható kimenet. 1), próbáltad már a v1<-sapply(data, sam, USE.NAMES=TRUE)-t? 26.11.2019
  • @iago Még mindig ugyanazt az eredményt kapom. A kimenet összesített értékek. Például ha 1 perces adatokkal rendelkezünk, azokat 2 perces, 5 perces és 10 perces adatokra összesítem. 26.11.2019
  • A lapply(data, sam) az eredeti listaformátumban adja vissza 26.11.2019
  • Megkapja a szükséges adatkimenetet? A cselekmény elkészítéséhez létre kell hoznia a pdf-et a cikluson kívül. 26.11.2019
  • @StupidWolf Igen. Tehát minden telken külön mentsem el a pdf-et? 26.11.2019
  • távolítsa el a pdf(plots.pdf) és dev.off() fájlokat a sam függvényből. Ezután készítse el a pdf(plot.pdf); lapply(data, sam) ; dev.off() 26.11.2019
  • Így kapsz 1 pdf-et, 3 oldalt 26.11.2019
  • @StupidWolf Köszönöm, ez sikerült. Azt hiszem, túl sok mindent akartam. De lehetséges-e szöveget hozzáadni az egyes cselekményekhez. Például a főfüggvényemben korrelációs együtthatót számolok. Írhatok-e korértéket az egyes adatokhoz a diagram bárhová? 26.11.2019
  • Lásd lent, kicsit túl hosszú ahhoz, hogy kommentben írjam 26.11.2019

Válaszok:


1

A kimenet eléréséhez, amint azt @JonnyPhelps javasolta, használja a lapply-t a sapply helyett. A diagramok elkészítéséhez és a korreláció megállapításához meg kell változtatnia a függvényt:

sam<-function(x) {
  ex<-c(3,2,4,5,2)
  z<-data.frame(x)
  y<-as.matrix(sapply(z, as.numeric)) 
  h<-lapply(c(2,5,10),  function(xx) tapply(y, as.integer(gl(nrow(x), xx, nrow(x)) ), FUN = sum))
  names(h)<-c("min2", "min5", "min10")
  min2<-h[[1]]
  plot(min2, ex, main="min. compare",
       xlab="Historical Values ", ylab="Disaggregated Values",
pch=19, col = "blue")
COR = cor.test(min2,ex)
LABEL = paste("cor=",signif(COR$estimate,3),"\np=",signif(COR$p.value,3))
mtext(LABEL,side=3,padj=2)
  return(h)
}

A korreláció kiszámítása megtörténik, és az mtext segítségével a diagram tetejére helyezi. Játssz a padj-val és az adj-vel, hogy a kívánt szöveget megkapd.

Az előző függvényben meghívtad a függvényben a plot-ot, ez minden iterációnál felülírja a fájlt. Ha mindent pdf-re szeretne nyomtatni, a következőket kell tennie:

pdf("plots.pdf")
v1<-lapply(data, sam)
dev.off()

Vagy ha ugyanazon az oldalon szeretnéd őket:

pdf("plots.pdf",width=8,height=4)
par(mfrow=c(1,3))
v1<-lapply(data, sam)
dev.off()

adja meg itt a kép leírását

26.11.2019
  • Amikor a fő függvényemmel megpróbáltam hozzáadni a cor-t a ábrázoláshoz, ezt a hibát kapom a COR$becslésben: A $ operátor érvénytelen atomi vektorok hibája esetén. 27.11.2019
  • Adja hozzá az egyes adatok nevét is a diagramhoz, amelyet használtam. nevek‹-unique(sub(\\.\\d+$, , names(data))). De nem sikerült hozzáadnom ezt a beillesztési funkcióhoz címkeként. 27.11.2019
  • @HüsamettinTayşi, akkor kapod az első hibát, mert a cor.test nem sikerült. mit értesz fő funkció alatt? 27.11.2019
  • A második részhez pedig át kell lapoznia az adatok neveit 27.11.2019
  • Mármint a számításaimhoz használt függvény. A sam függvényt mintaként használtam, de a saját függvényeim túl hosszúak. 27.11.2019
  • Kipróbáltam a lappot. De a cselekményben a nevek helyett karakter(0) van írva. A LABEL ‹-lapply(x, function(x) (paste(unique(sub(\\.\\d+$, , names(x)))))) 27.11.2019
  • Szia @HüsamettinTayşi, megértem, hogy ez frusztráló lehet számodra, de igen, csak sejteni tudom, hogy a fő funkciójában van olyan rész, ami nem működik, és ami a neveket illeti, meg kell gondolnia, hogy mit kell átmásolnia. Itt ebben a kérdésben lapply(data, sam), mi történik ha megcsinálod a lapply(colnames(data), sam), lehet, hogy módosítanod kell a sam, de működni fog 27.11.2019
  • Ú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..