我在for循环中工作,每次迭代都会生成一个矩阵,并希望将结果矩阵存储在列表中。例如,循环的结构使得我不能简单地通过循环索引索引结果列表
ResultsList[[i]] <- ResultsMx
无法使用此实例。
相反,我需要通过匹配名称将ResultsMx
添加到ResultsList
但不确定如何索引正确的名称和deminsions而不会收到错误:number of items to replace is not a multiple of replacement length
例如,我想添加此矩阵
ResultsMx <- structure(c(0.280409, 0.248557, 0.193688, 0.120225, 0.060881,
0.03218, 0.029315, 0.019525, 7e-06, 3e-06, 0.306503, 0.240209,
0.224629, 0.133996, 0.043117, 0.016981, 0.012545, 0.003268, 7.8e-05,
5.8e-05, 0.219001, 0.202018, 0.197539, 0.188427, 0.093204, 0.047265,
0.033493, 0.007712, 0.000352, 0.00015, 0.126588, 0.15627, 0.161544,
0.194544, 0.171473, 0.103416, 0.070513, 0.014678, 0.001778, 0.000774,
0.054797, 0.100531, 0.1249, 0.171576, 0.21895, 0.168987, 0.120546,
0.045224, 0.006602, 0.003019, 0.012318, 0.045509, 0.073426, 0.125358,
0.225135, 0.219425, 0.169645, 0.117345, 0.030413, 0.011488, 0.000385,
0.006894, 0.023663, 0.060295, 0.151452, 0.242802, 0.222163, 0.206509,
0.098567, 0.04849, 0, 1.2e-05, 0.000611, 0.005577, 0.035691,
0.151408, 0.239021, 0.301288, 0.230251, 0.211833, 0, 0, 0, 2e-06,
9.8e-05, 0.017526, 0.098463, 0.245786, 0.417003, 0.724185, 0,
0, 0, 0, 0, 9e-06, 0.004297, 0.038665, 0.21495, 0), .Dim = c(10L,
10L))
到这个空白矩阵列表:
SeasonResults <- list(BHSSummSymScReClass = matrix(0, nrow = 10, ncol = 10),
MTGSummSymScReClass = matrix(0, nrow = 10, ncol = 10),
BHSWintSymScReClass = matrix(0, nrow = 10, ncol = 10),
MTGWintSymScReClass = matrix(0, nrow = 10, ncol = 10))
将list元素与此名称对象匹配:
SeasonNames <- c("BHSSummSymScReClass", "MTGSummSymScReClass")
此处使用以下代码将第一个列表项与第一个SeasonName
项匹配:
SeasonResults[names(SeasonResults) == SeasonNames[1]] <- ResultsMx
生成上述警告,仅添加ResultsMx
中的1,1元素。
如何指定正确的尺寸,以便根据与ResultsMx
匹配的名称将整个SeasonResults
添加到SeasonNames
列表?
我看过很多相关的SO帖子,但没有一个涉及我需要根据名称匹配和维度进行索引。
提前致谢。
答案 0 :(得分:2)
我们可以使用for
循环和which
函数。 which
寻找
适用于names(SeasonResults)
与SeasonNames
中找到的匹配项。然后我们迭代这些索引,用ResultsMx
替换内容。
for(i in which(names(SeasonResults) %in% SeasonNames)){
SeasonResults[[i]] <- ResultsMx
}
答案 1 :(得分:1)
只需使用当前名称作为元素索引
assert branchPorts['master'] == 15565
assert branchPorts['HotFix'] == 15569
例如
SeasonResults[[theName]] = ResultsMx;