小编Sea*_*usX的帖子

基于R中的观察类型有效地应用不同的功能

假设我有一个A至少有一个"Type"列的数据集和一个"Data"包含T个不同观察类型的列,对于每个我将应用不同的函数:

funlist <- c(fun1, fun2,..., funT)
Run Code Online (Sandbox Code Playgroud)

我可以通过以下方式完成此任务:

方法1: sapply

for(t in 1:T){
    sapply(A[A[,"Type"]==t,"Data"],funlist[[t]])
}
Run Code Online (Sandbox Code Playgroud)

方法2: mapply

funvector <- rep(NaN,length(A[,"Type"]))
for(t in 1:T){
    funvector[A[,"Type"]]==t] <- funlist[[t]]
}
mapply(function(fun, x) fun(x), funvector, A[,"Data"])
Run Code Online (Sandbox Code Playgroud)

方法2是特别不合需要的,因为它创建了一个额外的对象,但在任何一种方法中我都无法避免创建for循环.由于我正在使用如此大的数据集以至于存储器约束是一个问题,是否有更有效的方法来编码这个问题,以便尽可能减少内存使用,即使以合理的速度成本?

performance r

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

标签 统计

performance ×1

r ×1