将矩阵拆分为列并存储在变量中

时间:2019-01-11 20:54:22

标签: r matrix data-manipulation

我有一个包含n行和d列的矩阵。例如,

n = 100; d = 3
mat = matrix(rnorm(n * d) ncol = d)

我需要获取矩阵的列并将其分配给变量x1,x2,...,xd。列数不会固定。

我尝试过拆分矩阵并使用mapply语句分配矩阵,但未发生分配:

nam = paste0("x", 1:d)
column_vectors = split(x, rep(1:ncol(x), each = nrow(x)))
mapply(FUN = assign, nam, column_vectors)

我可以用蛮力做到这一点,但必须有一种更简单,更清洁的方法。

nam = paste0("x", 1:d)
column_vectors = split(x, rep(1:ncol(x), each = nrow(x)))
for(i in seq_along(column_vectors)){

  assign(nam[i], column_vectors[[i]]) 
}

1 个答案:

答案 0 :(得分:1)

您可以尝试这种方法:

matList <- unlist(apply(mat, 2, list),  recursive = FALSE)
names(matList) <- paste0("x", 1:d)
list2env(matList, envir = globalenv())