Это на самом деле вопрос 7.21 в R FAQ (https://cran.r -project.org / doc / FAQ / R-FAQ.html # Как я могу превратить строку в в-variable_003f
Самая важная часть этого ответа близка к концу, где указано, что списком часто проще пользоваться. @Clemsang привел пример использования списка в цикле for.
Использование списка вместо глобальных переменных значительно снижает вероятность того, что вы случайно перепишете другую переменную, и упростит работу с вашими результатами. Если вы хотите что-то сделать с каждой из ваших новых матриц, то выможете просто ссылаться на них в цикле, аналогичном тому, как они были созданы, вместо того, чтобы беспокоиться о get
(или использовать lapply
или sapply
, чтобы сделать это еще проще), и если вы хотите скопировать / сохранить / удалить / и т. д.... со всеми матрицами у вас есть один объект для работы вместо необходимости повторения цикла.
В приведенном выше примере основным результатом цикла является выполнение нескольких назначений. В этом случае это часто прощеа также Лучше использовать lapply
или связанную функцию вместо явного цикла.Например:
garage <- lapply( 1:5, function(v1) {
matrix( rnorm(v1^2, 10, 3), v1, v1)
} )
names(garage) <- sprintf("cart_%d", 1:5)
garage[["cart_3"]]
tmpvar <- "cart_5"
garage[[tmpvar]]
sapply(garage, det)
rm(garage)