R Перебрать два вектора и сохранить результаты в датафрейме. - PullRequest
0 голосов
/ 01 февраля 2019

Я бы хотел просмотреть элементы в двух векторах.После каждой итерации я хотел бы сохранить результаты каждой итерации в виде столбца в кадре данных.Я хотел бы продолжить итерацию, пока все элементы обоих векторов не будут охвачены.

Моя попытка

# Define the size of my sample
n <- 446

# Preparing my vectors (n1 & n2)
p1 <- runif(18,0.8,0.95)
p2 <- 1 - p1
n1 <- round(p1*n)
n2 <- n - n1

#Creating empty df to store values of each iteration
df=data.frame()

#Building loop
for(i in 1:length(n1)) {
  for(j in 1:length(n2)) {
    tmp=sample(c(sample(4:5, n1[i], replace = TRUE), sample(1:3, n2[j], replace = TRUE)))
    df=rbind(df,tmp)
  }
}

Однако мой цикл, похоже, не создаетсяжелаемый вывод.

Желаемый вывод

В идеале вывод будет -

1) Кадр данных с 446 строками и 18 столбцами 2)С каждым столбцом, содержащим значения от 1 до 5, как определено в предыдущих шагах

Любые входные данные будут высоко оценены

1 Ответ

0 голосов
/ 01 февраля 2019

Вы можете сделать:

set.seed(42)

# Define the size of my sample
n <- 446

# Preparing my vectors (n1 & n2)
p1 <- runif(18,0.8,0.95)
# p2 <- 1 - p1
n1 <- round(p1*n)
# n2 <- n - n1

D <- sapply(n1, function(n1i) sample(c(sample(4:5, n1i, replace = TRUE), sample(1:3, n-n1i, replace = TRUE))))

Это даст вам матрицу D.Вы можете привести его к кадру данных:

D2 <- as.data.frame(D)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...