Я хотел бы оптимизировать следующие вложенную цикл, который перебирает над выбором набором столбцов в dataframe и проверяет, если она соответствует значениям/строки из вектора:оптимизировать цикл вложенного цикла в R, используя apply?
Positions=c()
for (col in vectorCols) {
for (code in vectorCodes){
Positions<- c(Positions,which(as.numeric(df[,col])==code))
}
dataframe довольно большой, с 800000 строк. vectorCodes может содержать 100 элементов и около 20 выбранных столбцов (из 2000).
я также пытался что-то вроде следующего, но это не помогло
FunctionGrepCol<-function(col){
Positions <- unlist(lapply(vectorCodes , function(x) (Positions,which(as.numeric(df[,col])==x))))
}
Positions <-unlist(lapply(vectorCols, FunctionGrepCol))
есть способ объединить положить вложенную цикл в функции применяется для оптимизации его?
Можете ли вы разместить небольшой пример ввода и ожидаемого выхода? Трудно предоставить рабочий код на основе того, что вы здесь указали. – Gopala
'' который уже векторизован, поэтому не уверен, зачем вы его зацикливаете. Например: 'x <- sample (1:10, 100, replace = TRUE); который (x% в% c (2, 3)) ' – Gopala
Я заметил, что% in% было медленнее, чем цикл for, но у меня нет фактических таймингов, я постараюсь их затушить. edit: Хм, хорошо, что это действительно намного быстрее, я не знаю, почему я думал, что цикл цикла был быстрее в этом случае. Огромное спасибо. – tafelplankje