lund är nöjd med hjälpen
lund 529
Postad: 11 mar 2022 17:06 Redigerad: 11 mar 2022 17:07

Skapa en funktion i RMarkdown

Hej,

Jag skulle behöva hjälp med att skapa en funktion i RMarkdown som ska fungera för olika inputvärden. Funktionen ska ta in ett värde s som beskriver ett tillstånd mellan 0-3 och ett värde bdp som är en simulerad F/D-process, av dessa finns det tre stycken vid namn forslag1, forslag2 och forslag3 (dessa har jag redan kodat). Syftet med själva koden är att ta fram tiden som varje bdp (F/D-process) spenderar i varje tillstånd.

Jag har redan skapat en kod för varje enskilt fall, det vill säga, jag har en kod för bdp=forslag1 och s=0, en kod för bdp=forslag1 och s=1, en kod för bdp=forslag1 och s=2 samt en kod för bdp=forslag1 och s=3. Sedan har jag även koder för forslag2 respektive forslag3 för samtliga tillstånd s. Dessa koder ser alla likadana ut förutom små ändringar, bifogar koden nedan och markerar med fetstil de som ändras för de olika fallen:

```{r, results='asis'}
steps <- forslag1$steps  # skulle jag här istället vilja undersöka forslag2 ersätter jag forslag1 med detta etc
state <- forslag1$state
time <- forslag1$tid
tillst <- 0
tillst10 <- 0 #tillst10 innebär forslag1 och tillstånd 0, vid forslag1 tillstånd 2 skrivs tillst12

for (i in 1:steps) {
if (state[i] == 0) { # vill jag här istället undersöka för tillstånd 1 ersätter jag 0 med en etta etc
tillst <- time[i]-time[i-1]
tillst10 <- c(tillst10, tillst) # tillst10 står för # tillst10 står för förslag 
}}
print(sum(tillst0)) #det är denna jag vill ha
```

Det jag önskar hjälp med nu är att skriva om denna till en funktion så att jag slipper ha flera olika funktioner för de olika F/D-processerna och tillstånden, det vill säga där jag ska kunna skriva f(2,forslag1) som då ska ta fram svaret för tillstånd 1 och bdp forslag1 och gärna spara dessa i vektorer med olika namn så att man kan ta fram samtliga och använde dessa i en tabell eller uträkning.

Hondel 1294
Postad: 11 mar 2022 18:46

Du kan skapa en funktion genom att skriva 

f=function(tillst, forslag) {
#din kod

}

och sedan kan du kalla denna funktion och spara resultatet som 

tilst10 = f(0, forslag1)

tilst25 = f(5, forslag2) 

 

osv

 

vad det du undrade? 

lund 529
Postad: 22 mar 2022 18:42
Hondel skrev:

Du kan skapa en funktion genom att skriva 

f=function(tillst, forslag) {
#din kod

}

och sedan kan du kalla denna funktion och spara resultatet som 

tilst10 = f(0, forslag1)

tilst25 = f(5, forslag2) 

 

osv

 

vad det du undrade? 

Ja precis, tack så mycket!!

Svara Avbryt
Close