在applydata.frame上使用时,参数(隐式)转换为字符.一个例子:
df <- data.frame(v=1:10, t=1:10)
df <- transform(df, t2 = as.POSIXlt(t, origin = "2013-08-13"))
class(df$t2[1])
## [1] "POSIXct" "POSIXt" (correct)
Run Code Online (Sandbox Code Playgroud)
但:
apply(df, 1, function(y) class(y["t2"]))
## [1] "character" "character" "character" "character" "character" "character"
## [7] "character" "character" "character" "character"
Run Code Online (Sandbox Code Playgroud)
有没有办法避免这种转换?或者我总是要转换回来as.POSIXlt(y["t2"])?
编辑
我的df有2个时间戳(比方说,t2和t3)和其他一些字段(比如说v1,v2).对于给定t2的每一行,我想找到k(例如3)行,其中t3最接近但小于t2(和相同的v1),并从这些行返回v2的统计量(例如平均值).我写了一个函数f(t2,v1,df),只是想在所有行上使用它apply(df, 1, function(x) f(y["t2"], y["v1"], df).在R中有没有更好的方法来做这些事情?