Я чувствую, что должен был найти/понять ответ на этот вопрос после частых поисков и большого количества чтения форума, но это все еще меня очень сбивает с толку. У меня есть два вложенных цикла for в r, и мне нужно сохранить вывод в переменную, но я точно не знаю, что назначить и где. Код работает так, как я хочу, просто я не могу найти, как получить вывод в той или иной форме. На вход циклов подается список подматриц. Вывод может быть либо в том же формате, но включать изменения, которые произошли в цикле, либо более идеальный формат будет включать все строки и столбцы в одну матрицу. Я попытался выполнить cbind, а также создать переменные вне циклов, чтобы сохранить все позже (вы, вероятно, заметите мои попытки закомментировать их), но, как я уже сказал, я все еще немного запутался. Любая помощь будет принята с благодарностью!
loop.List <- list()
#results.frame <- data.matrix()
ctr <- 0 # creating a counter and zeroing it
for (i in 1:length(subM.List)) { #Looping through each submatrix in the list
loop.List[[i]] <- list()
for (j in 2:nrow(subM.List[[i]])){ #Loop through each row of each submatrix in the list
if ((subM.List[[i]][j, "LAT"] == -180) & #Imputation 1, imputing data points with 0 activity intensity
(subM.List[[i]][j, "ACTIVITYIN"] == 0) &
!((subM.List[[i]][j-1, "ACTIVITYIN"] > 0))[1]) { #stop imputing at the first occurrence of a value > 0 in activity intensity
imputeLat <- replace(subM.List[[i]][ ,"LAT"], subM.List[[i]][j,"LAT"], subM.List[[i]][j-1,"LAT"])
imputeLon <- replace(subM.List[[i]][ ,"LON"], subM.List[[i]][j,"LON"], subM.List[[i]][j-1,"LON"])
replace.col <- replace(subM.List[[i]][ ,"Impute"], subM.List[[i]][j,"Impute"], 1) #populated impute column. If point is imputed will have a 1
allComb <- cbind(imputeLat, imputeLon, replace.col)
ctr <- (ctr + 1)
}
}
#result[[i]] <- allComb
#write.table(results.frame, "C:\\RWorkspace\\newMatrix.txt")
#return(results.frame)
}
РЕДАКТИРОВАТЬ: образец данных одной из подматриц Список содержит несколько подматриц с разным количеством строк.
FixTYPE ActivityIn LAT LON Impute
8 0 32.81320 -117.2300
8 0 32.81324 -117.2301
8 1 32.81327 -117.2302
8 1 32.81326 -117.2301
6 0 32.81324 -117.2300
6 0 32.81338 -117.2302
6 0 32.81353 -117.2299
7 0 -180.000 -180.000
7 0 -180.000 -180.000
7 0 -180.000 -180.000
7 0 -180.000 -180.000
7 1 -180.000 -180.000
7 2 -180.000 -180.000
7 1 -180.000 -180.000
1 0 32.81315 -117.2300
8 0 32.81318 -117.2300
lapplyиapply, но без доступа к вашим данным (или минимального примера) трудно помочь конкретно - person alexwhan   schedule 18.06.2013foo, которая принимает одну подматрицу в качестве входных данных и выводитallComb. Затем запуститеlapply(subM.List, foo)илиdo.call(rbind, lapply(subM.List, foo)). - person flodel   schedule 18.06.2013