小编ang*_* mo的帖子

在数据帧上使用apply时如何避免隐式字符转换

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中有没有更好的方法来做这些事情?

r apply dataframe

14
推荐指数
1
解决办法
4680
查看次数

标签 统计

apply ×1

dataframe ×1

r ×1