【问题标题】:Create a new matrix in each for loop iteration在每个 for 循环迭代中创建一个新矩阵
【发布时间】:2017-03-23 09:08:25
【问题描述】:

我想使用 for 循环在循环的每次迭代中创建一个新矩阵。

mining_t = c("Zr_t","Sr_t","Rb_t","Zn_t","Cu_t","Fe_t","Mn_t","V_t","Ti_t","Ca_t","K_t","Ba_t")

for (i in mining_t){
  ??=matrix(c(VI9A_mn[1:7,i],VI9A_mn[8:14,i],VI9A_mn[15:21,i]),nrow=7,byrow=FALSE)
  colnames(i)=c("45","90","135")
}

我希望每个矩阵有 3 列 7 行。每个新矩阵由矩阵VI9A_mn 的第 i 列(所有行)组成,并且应该具有向量 mining_t 的关联元素的名称。

【问题讨论】:

  • 最好不要在全局环境中创建多个对象,而是在list 中工作,如下面的答案所示

标签: r loops matrix


【解决方案1】:

我们可以通过 'VI9A_mn' 的列做一个split

lst <- lapply(split(VI9A_mn, col(VI9A_mn)), 
                matrix, ncol=3, dimnames = list(NULL, c(45, 90, 135)))

最好将matrix 对象保存在list 中。但是,如果我们坚持在全局环境中有多个对象,请使用list2env

list2env(lst, envir = .GlobalEnv)

【讨论】:

  • 很好,谢谢!有没有办法我可以用另一个名称(我的向量“mining_t”中的名称)调用列表中的每个元素?
  • @jo.H 可以使用lst[[1]]lst$Zr_t调用an元素或lst[[mining_t[1]]]
猜你喜欢
  • 2017-11-22
  • 2018-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-12
  • 1970-01-01
  • 2023-03-04
  • 2019-12-15
相关资源
最近更新 更多