我觉得我应该在频繁搜索和大量论坛阅读之后找到/理解这个问题的答案,但它仍然让我感到困惑。我在r中有两个嵌套for循环,需要将输出保存到变量,但我不知道要分配什么和在哪里。代码按我想要的方式运行,只是我似乎无法找到如何以某种形式获得输出。循环的输入是子矩阵列表。输出可以是相同的格式,但包括循环中发生的更改,或者更理想的格式将包括一个矩阵中的所有行和列。我尝试做一个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
答案 0 :(得分:3)
与在for循环范围之外创建ctr
变量的方式类似,如果要保留这些循环的结果,则应为要尝试捕获的输出创建某种存储变量。如果您能提供可重复的示例,我们可以为您提供更多帮助。
这是一个简单的例子:
p=10
q=20
M=matrix(seq(1,p*q), p, q)
output=matrix(NA, p,q) # storage matrix
for(i in 1:p){
for(j in 1:q){
# do something
output[i,j] = 2*i + j^2
}
}
正如其他人所说,使用apply
函数可能会简化您要完成的工作。