Это обычная вещь, которую люди хотят делать, особенно когда они приходят из других языков программирования. Тем не менее, есть лучшие способы сделать то же самое, и вы не должны следовать рекомендациям по использованию assign
; это плохой совет, о котором вы, вероятно, пожалеете позже.
Способ, которым мы делаем такие вещи в R, заключается в использовании списков , специально именованных списков:
x <- replicate(1000,rnorm(200,0,1),simplify = FALSE)
x <- setNames(x,paste0("A",seq_along(x)))
Теперь x
- это именованный список длины 1000, каждый элемент - вектор длины 200 из нормального (0,1) распределения.
Вы можете обращаться к каждому через x[[1]]
или x[["A1"]]
по мере необходимости. Кроме того, поскольку все они находятся в одном объекте, вы можете легко работать с группой, используя такие инструменты, как lapply
.
Практически каждый раз, когда вы обнаруживаете, что хотите создать последовательность объектов с похожими именами, это должно быть сигналом для вас, что вам следует использовать список вместо этого.