通过for循环表传递表

时间:2019-08-14 14:56:10

标签: r for-loop datatables lapply

让我们假设我有n个表:table_1,table_2,...,table_n。 我想创建如下所示的n个矩阵,但是我不知道如何使用for循环或lapply函数进行相同的操作:

matrice_WS_1 = cbind(tab_1$WS) %*% rbind(tab_1$WS)
matrice_WS_2 = cbind(tab_2$WS) %*% rbind(tab_2$WS)
matrice_WS_3 = cbind(tab_3$WS) %*% rbind(tab_3$WS)
.
.
.
matrice_WS_n = cbind(tab_n$WS) %*% rbind(tab_n$WS)

1 个答案:

答案 0 :(得分:0)

将表放入列表中,并进行遍历:

tbl.list <- list(table_1, table_2, table_3, table_n)

mat.list <- setNames(
  vector(mode = "list", length = length(tbl.list)), 
  nm = paste0("matrix_WS_",1:length(tbl.list))
  )

for (i in 1:length(tbl.list)) {
  dat = tbl.list[[i]]["WS"] #retain two dimensions
  mat = as.matrix(dat) #convert to matrix
  out = mat %*% t(mat) #transform data as desired
  mat.list[[i]] <- out
}