Ich hoffe, das Thema ist hier richtig, der Betreff ist sehr kryptisch, aber das Problem dauert etwas länger.
Ich habe einen Dataframe, der einen Monat und ein Jahr enthält. Aus diesen Daten ermittele ich das Fälligkeitsdatum, und zwar den 3. Freitag in diesem Monat bzw. Jahr (ja, Eurex).
Dieses Datum ermittele ich mit einer Funktion, und formatiere und konvertiere da auch wild rum – Funktioniert aber.
Jetzt will ich die Daten in dem Dataframe in einer neuen Spalte speichern.
Dazu nehme ich mapply. Mapply liefert aber kein Datum, sondern die ‚Werte‘:
Mache ich dies über eine Schleife (ohne mapply), dann will es.mapply(Maturity, df$Month, df$Year)
[1] 18278 18677 18341 18642 18313 18705
Mein Problem ist nun, dass ich nicht weiß, ob diese Funktion (mit wilden Formatierungen und Konvertierungen) in Kombination mit mapply so geht, oder ich da was fehlerhaft programmiert habe, oder ob es wirklich nicht geht.
Hier ein Minimalbeispiel:
Code: Alles auswählen
df <- data.frame(rep(1:3,2), rep(c(2020,2021),3))
colnames(df) <- c("Month", "Year")
Maturity <- function(month, year)
{
d <- as.Date(ISOdate(year, month, 1, tz="UTC"))
# wday: 0-6 day of the week, starting on Sunday.
d <- d + (7 - as.POSIXlt(d)$wday - 2)
if((as.POSIXlt(d, tz="UTC")$mon+1)!=month) d <- d + 7
d <- d + 14
return(d)
}
mapply(Maturity, df$Month, df$Year)
df$Maturity <- Sys.Date()
for(i in 1:nrow(df))
{df[i,]$Maturity <- Maturity(df[i,]$Month, df[i,]$Year)}
schubbiaschwilli