Мой код:R: динамическое имя столбца в цикл с cbind на каждом шаге
N = 4;
pred_sales_mean <- c(Q1 = 11000, Q2 = 15000, Q3 = 16000, Q4 = 11000)
pred_sales_sd <- c(Q1 = 3000, Q2 = 4000, Q3 = 5000, Q4 = 3000)
pred_sales <- rbind(mean = pred_sales_mean, sd = pred_sales_sd)
sales <- vector()
for (q in paste("Q", 1:4, sep = "")){
sales <- cbind(sales, q = round(rnorm(N, pred_sales['mean',q], pred_sales['sd',q])));
# other code indexing sales[,q]
}
где
> pred_sales
Q1 Q2 Q3 Q4
mean 11000 15000 16000 11000
sd 3000 4000 5000 3000
Я хотел бы получить это в первом цикле:
> sales
Q1
[1,] 8
[2,] 1
[3,] -7
[4,] -4
в отличие от этого:
> sales
q
[1,] 8
[2,] 1
[3,] -7
[4,] -4
соответственно для второго цикла:
> sales
Q1 Q2
[1,] 8 -3
[2,] 1 4
[3,] -7 0
[4,] -4 -1
в противоположность этому:
> sales
q q
[1,] 8 -3
[2,] 1 4
[3,] -7 0
[4,] -4 -1
я нашел this Двойники вопрос, но решение, которое я ищу не дано здесь:
Просто выполните имена (продажи) <- paste0 («Q», 1: 4) 'после окончания цикла? Хотя вся концепция растущих объектов в цикле for в корне неверна, когда дело доходит до R по крайней мере. Лучше вы объясните, чего вы на самом деле пытаетесь достичь, и мы постараемся вести в лучшем направлении. Например, цикл может быть преобразован только в 'sales <- matrix (round (rnorm (16, 1, 5)), 4); colnames (sales) <- paste0 ("Q", 1: 4) '. –
Я отредактировал сообщение с некоторыми clarificaiton о том, что я за. –
Так что вы не можете просто сделать 'matrix (rnorm (16, unlist (pred_sales [1,]), unlist (pred_sales [2,])), 4)'? (в случае, если 'pred_sales' является' data.frame'. Вам не нужно 'unlist', если его' matrix') –