Mit sapply auf Vektor POSIXct
Frage
Ich habe, was eine sehr einfache Frage sein kann. Ich möchte eine Spalte von POSIXct Objekten aus einem Datenrahmen verarbeiten und einen Vektor von Datetime Strings erzeugen. Ich habe versucht, den folgenden sapply Aufruf zu verwenden,
dt <- sapply(df$datetime, function(x) format(x,"%Y-%m-%dT%H:%M:%S"))
, aber ohne Erfolg. Ich halte die folgende Fehlermeldung erhalten:
> Error in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L, :
invalid 'trim' argument
Wenn ich diese Funktion auf ein einziges POSIXct Objekt aus der Spalte anwenden, habe ich kein Problem. So bin ich im Moment ratlos darüber, was das Problem ist. Muss ich etwas Besonderes tun mit POSIXct Objekte?
Lösung
format()
wird ein Vektor-Argument, so
format(df$datetime,"%Y-%m-%dT%H:%M:%S")
tun sollten, was Sie brauchen.
Wenn Sie sapply verwenden, werden Ihre Objekte numerischen dazu gezwungen, und so die falsche Format-Methode aufgerufen wird. Sie könnten sie zu POSIXct zwingen zurück durch sapply(df$datetime, function(x) format(as.POSIXct(x, origin="1970-01-01"),"%Y-%m-%dT%H:%M:%S"))
verwenden, aber wenn Sie einen besonderen Grund zur Verwendung apply
haben, benutzen Sie einfach die oben beschriebene Methode