r - 从向量中删除元素,进行计算并将它们放回R中的最有效方法
问题描述
我试图找到使用 12 次休息的最佳方法cut
,vector
但我希望第一个集群包含从 0 到特定值 ( onePercentQuantile
) 的值。因此,一种方法是在跟踪删除的值索引的同时删除下面onePercentQuantile
的所有值,然后只运行 11次中断,最后将删除的索引作为集群 1 放回新对象中,从最左边的索引开始.vector
cut
vector
我没有找到一种方法来忽略cut
函数中特定阈值以下的值,所以我自己做了。这是我能找到的最有效方法的示例:
vector_gene <- sample(1:100, 10000, replace=TRUE)
onePercentQuantile<- 5
indexUnderPercentQuantile <- which(vector_gene <= onePercentQuantile)
overPercentQuantile <- vector_gene[vector_gene > onePercentQuantile]
tmp <- as.numeric(cut(c(t(overPercentQuantile)),breaks=11))+1
if (1 == indexUnderPercentQuantile[1]){
tmp <- insert(tmp, 1, values=1)
indexUnderPercentQuantile <- indexUnderPercentQuantile[2:length(indexUnderPercentQuantile)]
}
for (i in 1:length(vector_gene)){
if (i>length(tmp)){
tmp <- c(tmp,rep(1,length(vector_gene)-i+1))
break
}
else if (i == indexUnderPercentQuantile[1]){
tmp <- c(tmp[1:i-1],1,tmp[i:length(tmp)])
if (length(indexUnderPercentQuantile)>1){
indexUnderPercentQuantile <- indexUnderPercentQuantile[2:length(indexUnderPercentQuantile)]
}
}
}
使用该profvis
包,我跟踪了内存使用情况和运行时间。
多达 10.000 个元素,几乎不使用内存即可立即获得结果。
多达 100.000 个元素,内存使用量已经在 3.5 秒内运行 9Go 左右
多达 1.000.000 个元素,运行时间太长,我将其关闭。
瓶颈是已删除索引的重新归因:
tmp <- c(tmp[1:i-1],1,tmp[i:length(tmp)])
我已经尝试过该insert
功能,R.utils
但它在内存使用和运行时间方面最差
有没有更好的方法,特别是在内存使用方面,来解决这个问题?谢谢 !
解决方案
推荐阅读
- ios - 用户选择日期后无法显示“今天”而不是今天的日期
- c# - 带有 where 子句的 LINQ 方法语法
- c++ - C++中固定数组和动态分配数组的区别
- scala - SBT 同步在 intellij 上引发错误“无法添加依赖项”
- jquery - Bootstrap (v4.4.1) 折叠不适用于 jQuery (v3.5.0) - 错误:无法将对象转换为原始值
- python - 首次出现后如何为所有下一个日期添加条目
- lisp - 如何从终端在 Mac 上运行 lisp 程序?
- javascript - 第二个组件无法重新加载数据
- android - 未调用作业服务
- c - 结构变量是否默认初始化?