Хотя ответ @ Moody's, вероятно, является более чистым вариантом, я подумал, что предоставлю код, который делает то, что вы изначально хотели, чтобы он делал:
Давайте создадим 4 матрицы, имена которых представляют собой комбинации из 2 элементов:
a_1 <- a_2 <- b_1 <- b_2 <- matrix(1:20, ncol = 5)
Вектор имен строк и имен столбцов:
rnames <- paste0("row_", 1:4)
cnames <- paste0("col_", 1:5)
Получите элементы name:
x <- c("a", "b")
y <- 1:2
Для вашего цикла вам необходимо понять, что temp
это просто строка символов, поэтому colnames(temp)
не будет работать.Вы хотите создать строку, которая включает всю команду, проанализировать ее как выражение и затем оценить ее:
for (i in x) {
for (j in y) {
temp <- paste(i, j, sep = "_")
eval(parse(text = paste0("dimnames(", temp, ") <- list(rnames, cnames)")))
}
}
Примечание.dimnames(temp)
быстрее rownames
и colnames
.