ConvertToLocal下面的函数采用和的数据框,Names并Times使用一些if语句进行时区转换.如何对此进行矢量化以便我不使用循环?
谢谢.
这是代码:
ConvertToLocal<-function(data)
{
Name<-data$Name
Time<-data$Time
for(i in 1:length(Name))
{
if(Name[i]== "Bob" | Name[i] == "Al" )
{
Time[i]<-format(Time[i],tz="America/Los_Angeles")
}else if (Name[i] == "Mike" | Name[i] == "Tom" )
{
Time[i]<-format(Time[i],tz="Asia/Singapore")
}else if (Name[i] == "Fred")
{
Time[i]<- format(Time[i],tz="Europe/London")
}
}
return(Time)
}
Time<-c(as.POSIXct("2015-02-03 14:27:35.943", tz = "UTC"),as.POSIXct("2015-02-03 14:27:35.943", tz = "UTC"),as.POSIXct("2015-02-03 14:27:35.943", tz = "UTC"),as.POSIXct("2015-02-03 14:27:35.943", tz = "UTC"))
Name<-c("BOB","Al","Mike","Fred")
data<- data.frame(Name = Name, Time = Time)
ConvertToLocal(data)
Run Code Online (Sandbox Code Playgroud)
尝试这个:
ConvertToLocal<-function(data) {
Name<-data$Name
Time<-data$Time
indx <- Name== "Bob" | Name == "Al"
Time[indx]<-format(Time[indx],tz="America/Los_Angeles")
indx <- Name == "Mike" | Name == "Tom"
Time[indx]<-format(Time[indx],tz="Asia/Singapore")
indx <- Name == "Fred"
Time[indx]<- format(Time[indx],tz="Europe/London")
return(Time)
}
Run Code Online (Sandbox Code Playgroud)