使用apply优化R中的嵌套for循环?
optimize a nested for loop in R, using apply?
我想优化以下嵌套 for 循环,它遍历数据框中的 select 列集并检查它是否对应于向量中的 values/strings:
Positions=c()
for (col in vectorCols ) {
for (code in vectorCodes ){
Positions<- c(Positions,which(as.numeric(df[,col])==code))
}
数据框很大,有 800,000 行。 vectorCodes 可以有 100 个项目和大约 20 selected 列(共 2000 个)。
我也试过类似下面的方法,但没有用
FunctionGrepCol<-function(col){
Positions <- unlist( lapply( vectorCodes , function(x) (Positions,which(as.numeric(df[,col])==x)) ) )
}
Positions <-unlist(lapply(vectorCols, FunctionGrepCol ))
有没有办法将嵌套的for循环放在apply函数中进行优化?
您可以尝试这个解决方案,而不是循环遍历列名和子集,您可以先对数据框进行子集化,然后像列表一样循环遍历它。
Positions <- unlist(lapply(df[, vectorCols], function(col) which(col %in% vectorCodes)))
我想优化以下嵌套 for 循环,它遍历数据框中的 select 列集并检查它是否对应于向量中的 values/strings:
Positions=c()
for (col in vectorCols ) {
for (code in vectorCodes ){
Positions<- c(Positions,which(as.numeric(df[,col])==code))
}
数据框很大,有 800,000 行。 vectorCodes 可以有 100 个项目和大约 20 selected 列(共 2000 个)。
我也试过类似下面的方法,但没有用
FunctionGrepCol<-function(col){
Positions <- unlist( lapply( vectorCodes , function(x) (Positions,which(as.numeric(df[,col])==x)) ) )
}
Positions <-unlist(lapply(vectorCols, FunctionGrepCol ))
有没有办法将嵌套的for循环放在apply函数中进行优化?
您可以尝试这个解决方案,而不是循环遍历列名和子集,您可以先对数据框进行子集化,然后像列表一样循环遍历它。
Positions <- unlist(lapply(df[, vectorCols], function(col) which(col %in% vectorCodes)))