我正在嘗試制作一個包含亂數的 3 列(和 100 行)的資料框,以便每行中的亂數加到 72。
我正在使用此代碼生成亂數:
random_numbers <- diff(c(0, sort(sample(72, 2)), 72))
雖然,由于格式的原因,我無法將這些亂數“擬合”到資料框中。例如:
i <- 1:100
d <- data.frame(i)
d$rand <- diff(c(0, sort(sample(72, 2)), 72))
Error in `$<-.data.frame`(`*tmp*`, rand, value = c(37, 21, 14)) :
replacement has 3 rows, data has 100
我有另一個想法,至少我可以創建所有 100 個亂數:
results <- list()
for (i in 1:100) {
r_i <- diff(c(0, sort(sample(72, 2)), 72))
results[[i]] <- r_i
}
results[1]
# [[1]]
# [1] 3 19 50
results[2]
# [[1]]
# [1] 16 11 45
但我不確定如何從這些資料中創建一個包含 3 列和 100 行的資料框。
我知道如何在“經典”意義上做到這一點:
i <- 1:100
r_1 <- rnorm(5, 5, 100)
r_2 <- rnorm(5, 5, 100)
r_3 <- rnorm(5, 5, 100)
d <- data.frame(i, r_1, r_2, r_3)
d = data.frame(i, r_1, r_2, r_3)
但當然,在上面的資料框中,這 3 個數字加起來肯定不會是 72。
是否可以將我上面生成的 100 個亂數results放入資料框中?
uj5u.com熱心網友回復:
我們可以使用replicatewithn指定為 'd' 的行數并從matrix輸出中分配新列
d[paste0("r_", 1:3)] <- t(replicate(nrow(d),
diff(c(0, sort(sample(72, 2)), 72))))
- 測驗平等
> all(rowSums(d[-1]) == 72)
[1] TRUE
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/462271.html
下一篇:亂數彼此太相似?
