Udd*_*din 2 null for-loop r matrix
我想创建18
名为mat10ci
, mat15ci
,....,的相同维度的空矩阵mat95ci
。我试过下面的代码
for( s in seq(10,95,by=5)){
paste0("mat",s,"ci")=array(NA, dim = c(10, 20))
}
Run Code Online (Sandbox Code Playgroud)
我有这个错误
target of assignment expands to non-language object
Run Code Online (Sandbox Code Playgroud)
帮助表示赞赏。
我推断您将对每个矩阵执行相同(或非常相似)的操作,在这种情况下,处理此问题的 R 惯用方法是将它们放在一个矩阵列表中。这与“帧列表”的方法相同,请参阅/sf/answers/1706334521/。
对于矩阵列表,请尝试:
lst_of_mtx <- replicate(18, array(dim = c(10, 20)), simplify = FALSE)
Run Code Online (Sandbox Code Playgroud)
作为替代方案,根据您的处理,您可以执行单个 3d 数组
ary <- array(dim=2:4, dimnames=list(NULL,NULL,paste0("mat", c(10, 15, 20, 25), "ci")))
ary
# , , mat10ci
# [,1] [,2] [,3]
# [1,] NA NA NA
# [2,] NA NA NA
# , , mat15ci
# [,1] [,2] [,3]
# [1,] NA NA NA
# [2,] NA NA NA
# , , mat20ci
# [,1] [,2] [,3]
# [1,] NA NA NA
# [2,] NA NA NA
# , , mat25ci
# [,1] [,2] [,3]
# [1,] NA NA NA
# [2,] NA NA NA
Run Code Online (Sandbox Code Playgroud)
在那里你可以只处理数组的一个“切片”
ary[,,"mat25ci"]
# [,1] [,2] [,3]
# [1,] NA NA NA
# [2,] NA NA NA
Run Code Online (Sandbox Code Playgroud)