Разбить матрицу на столбцы и сохранить в переменных - PullRequest
0 голосов
/ 11 января 2019

У меня есть матрица с 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 голосов
/ 12 января 2019

Вы можете попробовать этот подход:

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