【发布时间】:2010-11-26 13:53:21
【问题描述】:
大部分循环代码是这样的
retVal=NULL
for i {
for j {
result <- *some function of vector[i] and vector[j]*
retVal = rbind(retVal,result)
}
}
既然这么普遍,有没有系统的方法来翻译这个成语?
这可以扩展到大多数循环吗?
【问题讨论】:
大部分循环代码是这样的
retVal=NULL
for i {
for j {
result <- *some function of vector[i] and vector[j]*
retVal = rbind(retVal,result)
}
}
既然这么普遍,有没有系统的方法来翻译这个成语?
这可以扩展到大多数循环吗?
【问题讨论】:
plyr 包提供了一组通用工具,用于在处理大数据结构时替换循环结构,方法是将其分解为多个部分,独立处理每个部分,然后将结果重新组合在一起。
【讨论】:
第一个目标应该是获得工作代码。你在那里。然后尝试一些简单的优化。例如。
retVal <- matrix(NA, ni, nj) # assuming your result is scalar
for (i in 1:ni)
for (j in 1:nj)
retVal[i][j] <- *some function of yours*
运行速度已经快了很多,因为您不需要为每个 i,j 组合重新分配内存。
至于循环,您可以先用 apply 系列中的东西替换内部循环。我不知道有什么完全通用的东西可以回答你的问题——这取决于你的函数采用什么参数以及它产生什么类型的返回对象。
【讨论】: